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

时间:2016-01-07 17:11:13

标签: 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结果。如果我 交换 带有user_id子句的watched子句,我会得到预期的结果。

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

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

结果就是我的期望。

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

思想?

1 个答案:

答案 0 :(得分:2)

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

使用(观察==否),您已指定内联值而不是"%"分隔格式,因此它不会使用" false"来自参数数组。