簡體   English   中英

生成nspredicate時EXC_BAD_ACCESS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM