Ios 如何判断NSManagedObject是否已保存?

Ios 如何判断NSManagedObject是否已保存?,ios,core-data,Ios,Core Data,如何判断NSManagedObject是否持久化 (与尚未保存或已删除的新对象相反。)检查其对象id是否持久 BOOL isSaved = !object.objectID.isTemporaryID; 有关isTemporaryID的文档: “如果接收者是临时的,则为“是”,否则为“否”。大多数对象ID返回“否”。插入托管对象上下文的新对象将被分配一个临时ID,该临时ID在对象保存到永久存储区后将替换为永久ID。”Daij Djan的回答仅适用于iOS 8.0+。对于旧版本,请使用: BOO

如何判断NSManagedObject是否持久化


(与尚未保存或已删除的新对象相反。)

检查其对象id是否持久

BOOL isSaved = !object.objectID.isTemporaryID;
有关isTemporaryID的文档:


“如果接收者是临时的,则为“是”,否则为“否”。大多数对象ID返回“否”。插入托管对象上下文的新对象将被分配一个临时ID,该临时ID在对象保存到永久存储区后将替换为永久ID。”

Daij Djan的回答仅适用于iOS 8.0+。对于旧版本,请使用:

BOOL isSaved = nil != object.objectID.persistentStore;

在swift中,您似乎必须使用
.temporaryID
而不是
.isTemporaryID
是的,属性是
temporaryID
,但是getter被设置为custom
isTemporaryID
,因此Objective-C将其称为
[object.objectId isTemporaryID]
,但是afaik,可以为尚未持久化的对象获取永久ID,如果我错了,请更正。这将导致答案不确定:/Added Documentation@JanNash——我不这么认为,但我可能错了;)但是我们在swift 2.3中使用这个逻辑,您必须使用object.objectID.temporaryIDNo。我用在下半身上嗯,奇怪。。。“在iOS 8.0及更高版本中提供”(文档)。文档错误imsure@Andy,是的,根据iOS 3.0的
CoreData/NSManagedObjectID.h
+