我的应用使用UIManagedDocument来处理Core Data的数据。 2个实体之间存在多对多的关系:Post和Tag。
当我想编辑帖子时,我创建一个临时NSManagedObjectContext,将其parentContext设置为UIManagedDocument的managedObjectContext,并使用objectWithID:方法检索帖子。
我们假设:
问题在于:
正确检索所有post2属性,但多对多关系标记除外。
为什么post2.tags没有标签?
答案 0 :(得分:2)
经过进一步测试,我认为这与临时和永久物体ID有关;如果我们看到同样的事情,那么我会猜测MOC1中多对多关系返回的对象将具有临时的而非永久的ID。
据推测,在MOC2中,您正在进行一些插入以在多对多关系中创建对象。当您完成插入并在保存之前,获取通过[[moc2 insertedObjects] allObjects]插入的对象数组。使用跟踪数组将此数组移交给[moc2 obtainPermanentIDsForObjects:error]。然后在MOC2上调用save。
这似乎对我有用。看来默认情况下,在MOC2上调用save实际上并不会导致在MOC1中创建永久对象ID。
答案 1 :(得分:0)
我希望我能得到答案,但就我能够确定而言,这是一个错误。在这种情况下,To-many关系检索似乎根本不起作用。
坦率地说,似乎有点难以相信这会逃脱测试,但我完全无法以任何方式完成这项工作。