区分从内存中托管对象上下文和持久存储中获取的对象

时间:2017-11-14 20:10:43

标签: ios cocoa core-data

在iOS应用程序中,我使用解析JSON对象的框架创建NSManagedObject子类对象,然后将它们插入NSManagedObjectContext。但是,我想区分那些新创建的对象和已经保存到持久性存储中的对象。那是因为我可能需要更新或覆盖商店中的一些对象。当我执行NSFetchRequest时,它只返回所有已注册的对象,这两个对象都是从商店中提取的,以及我在本地创建的内存中的对象。我怎样才能区分这两种类型的对象?

1 个答案:

答案 0 :(得分:1)

您可以通过查看对象ID来判断是否已保存托管对象。检查myObject.objectID.isTemporaryID,直到您第一次保存对象为true,然后再false

然而,正如@ Paulw11在评论中暗示的那样,在这种情况下,通常最好在创建一个新对象之前找出你是否已经有一个本地对象。这避免了重复的问题。您可以更新现有对象的值,也可以将其删除并替换它。