Ios 创建nspredicate时EXC\u访问权限错误
我在计算从生日到今天的月数。 根据这个数字,我正在构建一个谓词来从核心数据中获取对象。 尽管月数计算正确(如日志所示),但在构建谓词时,我获得了EXC_BAD_访问权限 这是我的密码:Ios 创建nspredicate时EXC\u访问权限错误,ios,nspredicate,exc-bad-access,Ios,Nspredicate,Exc Bad Access,我在计算从生日到今天的月数。 根据这个数字,我正在构建一个谓词来从核心数据中获取对象。 尽管月数计算正确(如日志所示),但在构建谓词时,我获得了EXC_BAD_访问权限 这是我的密码: NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSUInteger unitFlags = NSMonth
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSMonthCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags
fromDate:birthdate
toDate:today options:0];
int months = [components month];
NSLog(@"months: %ld", (long)months);
NSPredicate *pred = [NSPredicate predicateWithFormat:@"(alter_min_monat > %@)", months];
为什么会发生这种情况?问题在于占位符,不是直接使用
NSPredicate
,而是使用内部调用的initWithFormat:
%@
不应与int
一起使用,请改用%d
所以这一行:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"(alter_min_monat > %@)", months];
应该是:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"(alter_min_monat > %d)", months];
其他链接信息:
%@
带int
?请尝试使用%d
。