ios - CoreData、NSPredicate 和 fetchRequest 令人费解的行为 - 或者只是我?

标签 ios swift core-data

我在使用 CoreData、NSPredicate 和 fetchRequest 时遇到了一个奇怪的场景。

我的谓词是:

predicate = NSPredicate(format: "(status == %d) AND (watched == NO) AND (user_id == %@)", argumentArray: [Int(ItemStatus.Shortlisted.rawValue), false, userId])

如果我使用上述谓词运行 fetchRequest,我会得到 0 个结果。如果我用 watched 子句交换 user_id 子句,我会得到预期的结果。

如果我使用 NSCompundPredicate,将各个子句分解为子谓词,使用:

request.predicate = NSCompoundPredicate(type: .AndPredicateType, subpredicates: [subPredicate1, subPredicate2, subPredicate3])

结果是我所期望的。

我不清楚为什么这三种方法之间存在差异。

想法?

最佳答案

猜测一下,(我的核心数据有点生疏)看起来你在参数数组中指定了 3 个参数,但谓词只使用了其中的 2 个。

使用 (watched == NO),您指定了内联值而不是使用“%”分隔格式,因此它不会使用参数数组中的“false”。

关于ios - CoreData、NSPredicate 和 fetchRequest 令人费解的行为 - 或者只是我?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34661185/

相关文章:

ios - Swift 3 向后兼容中的核心数据栈

ios - swift : AppDelegate and NSManagedObjectContext are nil

ios - 来自 imagePicker 的图像不会显示在我的 imageView 中

ios - Coredata 安全清除子实体

ios - 核心数据 : Private context with child Main context - FetchedResultsController not getting updates

swift - 在 Apple Watch 3 上检索相对高度信息时出现问题

ios - 使用 iOS 6 自动布局,在 UINavigationController 上方显示某些内容的正确方法是什么?

ios - 如何在 CoreData 的 NSLog 中显示详细信息?建议我一个解决方案

ios - 解码没有字段名称的 JSON 数组

swift - CK订阅错误iOS10