ios - 构建 nspredicate 时出现 EXC_BAD_ACCESS

标签 ios nspredicate exc-bad-access

我正在计算生日和今天之间的月数。 有了这个数字,我正在构建一个谓词来从核心数据中获取对象。 尽管月数计算正确(如日志所示),但我在构建谓词时收到 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];

其他链接信息:String Programming Guide: String Format Specifiers

关于ios - 构建 nspredicate 时出现 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23610509/

相关文章:

ios - 使用核心数据调用 NSPredicate 中对象的方法

ios - EXC_BAD_ACCES puchviewcontroller TableView

ios - EXC_BAD_ACCESS 代码=EXC_ARM_DA_ALIGN

objective-c - dispatch_get_global_queue vs dispatch_get_main_queue

ios - 在 iOS 中使用 Quickblox 的两个不同应用程序可以共享聊天/对话吗?

ios - 如何根据其中包含的某些值过滤数组

swift - getBoundingBox Size 有时会崩溃

iOS4 : how do I use video file as an OpenGL texture?

ios - Jenkins iOS 提交应用程序 Crashlytics 失败(使用 Xcode 集成插件)

ios - 搜索一个NSManagedObjects数组