[英]EXC_BAD_ACCESS when building nspredicate
我正在計算從生日到今天之間的月數。 有了這個數字,我正在建立一個謂詞從核心數據中獲取對象。 盡管正確計算了月數(如日志所示),但在構建謂詞時卻得到了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];
其他鏈接的信息: 字符串編程指南:字符串格式說明符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.