Core Data无法生成谓词的where子句(Swift)

时间:2015-08-05 13:01:29

标签: ios core-data

我有一个带有NSNumber属性的Core Data托管对象(存储为Integer 64)。我尝试使用谓词对象检索对象,如下所示:

let request = NSFetchRequest(entityName: "MyEntity")
request.predicate = NSPredicate(format: "pageId == %@", pageId)

然后导致以下运行时错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to generate where clause for predicate (pageId == 22205021) (unknown problem)'

其中pageId是" 22205021"在这种情况下。至于条款去哪里看起来没问题,即pageId == 22205021所以我不明白它为什么不能工作。

注意:我正在使用Xcode 7 beta 4。

3 个答案:

答案 0 :(得分:7)

实际上这是我的错 - 我在谓词中使用了一个不存在的属性。 “MyEntity”没有包含“pageId” - 更好的错误信息不会出错。

答案 1 :(得分:2)

在Swift中,

pageId实际上可能不是NSObject。

尝试NSPredicate(format: "pageId == %d", pageId)

使用整数进行比较而不是NSNumber。

答案 2 :(得分:0)

您发布的代码对我来说是正确的。如果代码在之前的Xcode中有效,并且没有其他更改(除了一致性),我认为它可能是一个可报告的错误。