我正在计算生日和今天之间的月数。 有了这个数字,我正在构建一个谓词来从核心数据中获取对象。 尽管月数计算正确(如日志所示),但我在构建谓词时收到 EXC_BAD_ACCESS。
这是我的代码:
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];
关于ios - 构建 nspredicate 时出现 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23610509/