已插入但尚未保存的 NSManagedObjects?
NSManagedObjects that have been inserted but not yet saved?
是否可以识别(在运行时)NSManagedObjects
已插入 NSManagedObjectContext
(即 inserted == YES
)但从未 save
d 到上下文的存储至今。
我一开始以为他们的 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
}
是否可以识别(在运行时)NSManagedObjects
已插入 NSManagedObjectContext
(即 inserted == YES
)但从未 save
d 到上下文的存储至今。
我一开始以为他们的 objectID
可能还是 nil
但事实并非如此。
UPDATE 我进行了一个快速实验,看看检查 temporaryID
(参见 [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
}