我有2的NSManagedObjectContext:将NSManagedObjectID从一个上下文用于另一个上下文是否安全?
- ContextA
- ContextB
在ContextA我设法获得实体的NSManagedObjectID。然后我使用这个对象ID来获取ContextB中的NSManagedObject。这工作正常,但我想知道这是否安全。或者如果你有更好更安全的方式来做到这一点,请告诉我。
谢谢。
我有2的NSManagedObjectContext:将NSManagedObjectID从一个上下文用于另一个上下文是否安全?
在ContextA我设法获得实体的NSManagedObjectID。然后我使用这个对象ID来获取ContextB中的NSManagedObject。这工作正常,但我想知道这是否安全。或者如果你有更好更安全的方式来做到这一点,请告诉我。
谢谢。
如果isTemporaryID
在ContextA中返回NO,这是安全的。否则,当临时对象被保存时,将会创建一个新的ID,并且你可能在ContextB中找不到它。
如果ContextA和ContextB是在不同的线程上创建的,并且您希望在两者中都访问相同的对象,那么您需要做什么。
它是安全的。文档一直清楚地表明您应该跨上下文使用objectID。
上下文是否在不同的线程上创建并不重要。每个上下文都有自己的NSManagedObject实例。 –
这个答案并不真的影响到它们是否线程安全。此外,由上下文共享的持久性商店协调员将处理临时ID问题。 – pickwick