我有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