Ios 首次使用不同对象ID的核心数据
我使用实体的对象ID来唯一标识本地通知并修改它们。我注意到,第一次保存实体时,它有以下Ios 首次使用不同对象ID的核心数据,ios,core-data,Ios,Core Data,我使用实体的对象ID来唯一标识本地通知并修改它们。我注意到,第一次保存实体时,它有以下对象ID: <x-coredata:///Task/tE1C5A230-A419-42D5-AF78-3327A09D13BD2> <x-coredata://D6703834-ECB4-487B-84F8-330A215E16B7/Task/p13> 所以我不能修改通知,因为实体的对象ID不同。有趣的是,每当我访问该实体时,对象ID与上一个保持相同 所以我这里的问题是为什么核心数据
对象ID
:
<x-coredata:///Task/tE1C5A230-A419-42D5-AF78-3327A09D13BD2>
<x-coredata://D6703834-ECB4-487B-84F8-330A215E16B7/Task/p13>
所以我不能修改通知,因为实体的对象ID
不同。有趣的是,每当我访问该实体时,对象ID
与上一个保持相同
所以我这里的问题是为什么核心数据在第一次创建实体时显示不同的对象ID?在多次打开应用程序后尝试访问实体时,对象ID(与第一个不同)保持不变。我很想知道为什么会这样
请注意:
我知道网上有很多帖子指出使用对象ID不是一种可靠的方法。我仍然想知道显示两个id的原因。第一个OID是临时OID-临时id表示尚未保存的对象。第二个id为永久id,保存后分配给生产任务单: 所以
第一个OID是临时OID—临时id表示尚未保存的对象。第二个id为永久id,保存后分配给生产任务单: 所以
这也是我的猜测。我想这就是原因。谢谢。这也是我的猜测。我想这就是原因。谢谢
var objectID = object.objectID
if objectID.temporaryID {
object.managedObjectContext.save() //try do catch left out
}
objectID = object.objectID
assert(objectID.temporaryID == false)