我有一个带有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。
答案 0 :(得分:7)
实际上这是我的错 - 我在谓词中使用了一个不存在的属性。 “MyEntity”没有包含“pageId” - 更好的错误信息不会出错。
答案 1 :(得分:2)
pageId
实际上可能不是NSObject。
尝试NSPredicate(format: "pageId == %d", pageId)
。
使用整数进行比较而不是NSNumber。
答案 2 :(得分:0)
您发布的代码对我来说是正确的。如果代码在之前的Xcode中有效,并且没有其他更改(除了一致性),我认为它可能是一个可报告的错误。