Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从一个上下文到另一个上下文使用NSManagedObjectID安全吗?_Ios_Objective C_Xcode_Core Data - Fatal编程技术网

Ios 从一个上下文到另一个上下文使用NSManagedObjectID安全吗?

Ios 从一个上下文到另一个上下文使用NSManagedObjectID安全吗?,ios,objective-c,xcode,core-data,Ios,Objective C,Xcode,Core Data,我有两个NSManagedObjectContext: 上下文 上下文B 在ContextA中,我设法获取了一个实体的NSManagedObjectID。然后,我使用这个对象ID在ContextB中获取NSManagedObject。这很好,但我想知道这是否安全。或者如果你有更好更安全的方法,请告诉我 谢谢。如果isTemporaryID在ContextA中返回NO,这是安全的。否则,保存临时对象时,将创建一个新ID,您可能无法在ContextB中找到它 如果ContextA和ContextB是

我有两个NSManagedObjectContext:

  • 上下文
  • 上下文B
  • 在ContextA中,我设法获取了一个实体的NSManagedObjectID。然后,我使用这个对象ID在ContextB中获取NSManagedObject。这很好,但我想知道这是否安全。或者如果你有更好更安全的方法,请告诉我


    谢谢。

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


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

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


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

    这是安全的。文档始终明确指出,应该跨上下文使用objectid

    这是安全的。文档始终明确指出,应该跨上下文使用objectid

    上下文是否在不同的线程上创建并不重要。每个上下文都有自己的NSManagedObject实例。这个答案与它们是否线程安全的问题无关。此外,上下文共享的持久存储协调器将处理临时ID问题。上下文是否在不同线程上创建并不重要。每个上下文都有自己的NSManagedObject实例。这个答案与它们是否线程安全的问题无关。此外,上下文共享的持久存储协调器将处理临时ID问题。