【发布时间】:2014-06-07 12:49:34
【问题描述】:
我在尝试获取对象 ID 之后的某些对象时遇到了这个奇怪的问题。该错误抱怨没有 objectID 键路径之类的东西,但托管对象应该对此做出响应。该错误并非一直抛出,这让我认为这可能是一个并发问题,尽管我已经仔细检查过并且每个上下文都在自己的线程上执行操作。
这里是谓词,虽然它在我看来是理智的:
[NSPredicate predicateWithFormat:@"objectID == %@", book.objectID]
编辑:关于this 的回答。我没有尝试使用对象本身,出于多线程的考虑,我需要使用 objectID。
【问题讨论】:
-
给出的答案仍然适用于这种情况。虽然很奇怪,但 CoreData 允许在谓词中将对象与它们的
objectID进行比较,因为无论如何这是它们的识别方式。 -
@DanShelly 不确定您所说的“仍然持有”是什么意思,在线程之间共享托管对象似乎不是一个好主意
-
我没有说你应该在线程之间共享托管对象。我的意思是您仍然可以使用链接答案中给出的谓词,但将您的对象 ID 作为参数提供:
@"SELF = %@",book.objectID -
@DanShelly 很奇怪,这行得通。谢谢!知道为什么吗?如果您将评论作为答案,我会接受。
标签: ios iphone ipad cocoa core-data