对象何时获得不是临时的objectID?

nik*_*ers 9 core-data objective-c ios5

我正在将一个新的Folder实体插入到我的模型对象上下文(MOC)中,它是主MOC的子代.保存之前,[[newFolder objectID] isTemporaryId]返回YES.当我首先保存我的MOC然后保存主MOC并询问[[newFolder objectID] isTemporaryId]时,它再次显示YES.我希望它现在是一个持久化对象,事实上,如果我询问SQLite文件,它包含新文件夹.在我运行的应用程序的整个时间,它会说YES.在我退出并重新启动之前,从商店加载对象,是否说不.

我一直以为NSManagedObject从临时对象变为存储对象,在保存时不再是临时对象ID.对象何时获得不是临时的objectID?

干杯

Bre*_*don 13

在刷新对象之前,父上下文中的更改不会更改子上下文中的对象.也许在保存父上下文后刷新对象就可以了.

如果这不起作用,总会有-[NSManagedObjectContext obtainPermanentIDsForObjects:error:].

  • 您建议以什么方式刷新对象?使用objectID的临时ID时,existingObjectWithID:error:返回错误,objectWithID:给出具有相同临时ID的同一对象.即使孩子和父母都得救了.重置父MOC会解决这个问题,但这是一个非常昂贵的解决方案. (3认同)
  • 这是改变的孩子,而不是父母.然后先保存孩子,然后保存父母.感谢gainPermanentIDsForObjects的技巧.但我仍然非常想知道为什么对象ID不刷新. (2认同)