【问题标题】:Is it safe to use the NSManagedObjectID from one context to the other?从一个上下文到另一个上下文使用 NSManagedObjectID 是否安全?
【发布时间】:2013-10-02 01:30:49
【问题描述】:

我有 2 个 NSManagedObjectContext:

  1. 上下文A
  2. 上下文B

在 ContextA 中,我设法获取了实体的 NSManagedObjectID。然后我使用这个对象 ID 来获取 ContextB 中的 NSManagedObject。这工作正常,但我想知道这是否安全。或者,如果您有更好、更安全的方法来做到这一点,请告诉我。

谢谢。

【问题讨论】:

    标签: ios objective-c xcode core-data


    【解决方案1】:

    如果isTemporaryID 在 ContextA 中返回 NO,则这是安全的。否则,保存临时对象时,会创建一个新 ID,您可能在 ContextB 中找不到它。

    如果 ContextA 和 ContextB 是在不同的线程上创建的,并且您想在两者中访问相同的对象,则需要您执行此操作。

    【讨论】:

    • 上下文是否创建在不同的线程上并不重要。每个上下文都有自己的 NSManagedObject 实例。
    • 这个答案并不真正涉及它们是否是线程安全的问题。此外,上下文共享的持久存储协调器将处理临时 ID 问题。
    【解决方案2】:

    这是安全的。文档一直明确表示您应该跨上下文使用 objectID。

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 1970-01-01
      • 2020-03-19
      • 2011-08-24
      • 2012-06-30
      • 2022-12-07
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      相关资源
      最近更新 更多