已插入但尚未保存的 NSManagedObjects?

NSManagedObjects that have been inserted but not yet saved?

是否可以识别(在运行时)NSManagedObjects 已插入 NSManagedObjectContext(即 inserted == YES)但从未 saved 到上下文的存储至今。

我一开始以为他们的 objectID 可能还是 nil 但事实并非如此。

UPDATE 我进行了一个快速实验,看看检查 temporaryID(参见 )是否也适用于嵌套的 MOC。这表明不是:保存子 MOC 只会向上推一个级别(即到父 MOC 但不是持久存储,后者更上一层),因此新插入的 MO 的对象 ID 仍然是临时的。在这种情况下,确定 MO 是否在子 MOC 中是新的并且从未保存(甚至没有保存到父 MOC)的一种方法显然是检查 [child objectRegisteredForID: object.objectID] && ![parent objectRegisteredForID: object.objectID]

您可以使用 temporaryID property of NSManagedObjectID:

YES if the receiver is temporary, otherwise NO. Most object IDs return NO. New objects inserted into a managed object context are assigned a temporary ID which is replaced with a permanent one once the object gets saved to a persistent store.

用法示例:

if(object.objectID.isTemporaryID) {
  //the object has not been saved yet
}