在多个NSPersistentStoreCoordinator-s之间传递NSManagedObjectID-s是否安全?

时间:2014-02-05 22:30:26

标签: ios core-data nsmanagedobjectcontext nspersistentstore

我有多个NSPersistentStoreCoordinator实例,每个实例只有一个NSPersistentStore,都指向同一个sqlite文件。在我的测试中,在它们之间传递NSManagedObjectID对象,然后调用

  

- (NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error

NSManagedObjectContext上的

似乎工作正常,但我还没有遇到苹果的任何文档,证实这应该可行。

所以,我的问题是,如果有人知道这是否应该有效(链接到一些苹果文档确认它会很棒!),如果有人知道这通常不起作用,那我应该不要这样做,那也太棒了!

1 个答案:

答案 0 :(得分:1)

调用该方法总是安全的。它是否返回一个对象是另一个故事。

当使用来自不同上下文的对象ID时,如果对象已经被您调用此方法的上下文访问,则只会获得非零结果。这意味着该对象已经存在于持久性存储中,这意味着它已经保存在其原始的托管对象上下文中。

或者换句话说,如果您已经使用ID保存了对象,并且您正在使用该对象的永久(保存后)ID,那么您将只获得非零结果。