Ios 区分从内存中托管对象上下文和持久存储中获取的对象
在iOS应用程序中,我使用一个框架创建Ios 区分从内存中托管对象上下文和持久存储中获取的对象,ios,cocoa,core-data,Ios,Cocoa,Core Data,在iOS应用程序中,我使用一个框架创建NSManagedObject子类对象,该框架解析JSON对象,然后将它们插入NSManagedObjectContext。但是,我想区分那些新创建的对象和那些已经保存到持久存储中的对象。这是因为我可能需要更新或覆盖存储中的某些对象。当我执行NSFetchRequest时,它只返回所有注册的对象,包括从存储中获取的对象和我在内存中本地创建的对象。如何区分这两种类型的对象?您可以通过查看托管对象的对象ID来判断托管对象是否已被保存。请检查myObject.ob
NSManagedObject
子类对象,该框架解析JSON对象,然后将它们插入NSManagedObjectContext
。但是,我想区分那些新创建的对象和那些已经保存到持久存储中的对象。这是因为我可能需要更新或覆盖存储中的某些对象。当我执行NSFetchRequest
时,它只返回所有注册的对象,包括从存储中获取的对象和我在内存中本地创建的对象。如何区分这两种类型的对象?您可以通过查看托管对象的对象ID来判断托管对象是否已被保存。请检查myObject.objectID.isTemporaryID
,在首次保存对象之前,该ID将为true
,此后将为false
然而,正如@Paulw11在评论中提到的,在这种情况下,在创建新对象之前,最好先确定是否已经有了本地对象。这样就避免了重复的问题。您可以更新现有对象上的值,也可以删除并替换它。为什么不延迟插入新对象,直到您确定是否存在匹配的对象?或者,您可以使用多个托管对象上下文,但这似乎是一个过于复杂的解决方案。我想我可以通过使用两个上下文来解决这个问题,一个用于创建对象,另一个用于从持久性存储读取,但这似乎过于复杂了。