核心数据:对象ID更改

时间:2017-04-08 17:15:54

标签: ios swift core-data

我试图在简单的核心数据实现中按对象ID获取对象。使用这个api

let targetObj = CoreDataManager.sharedInstance.privateQueueContext.object(with: self.objectID) as! MyObj

但似乎对象ID发生了变化。这是控制台日志

(lldb) po self.objectID
0xd000000000280000 <x-coredata://551DDB76-537D-41FA-B923-F772E5EE5D29/MyObj/p10>

(lldb) po CoreDataManager.sharedInstance.privateQueueContext.object(with: self.objectID).objectID
0xd000000000280006 <x-coredata://551DDB76-537D-41FA-B923-F772E5EE5D29/MyObj/p10>

如果我做错了,请告诉我。 实际上,我会将这些objectId保存在队列中,并且需要根据这些objectIds 将对象出列。

由于 ANKIT

1 个答案:

答案 0 :(得分:2)

打印每个对象ID时,您所看到的唯一区别是存储对象ID的内存中的地址。

所以,如果你拿这两个对象并将它们与==进行比较,它们会有所不同,因为那是测试参照相等。

如果将这两个对象与isEqual:进行比较,它将返回true,因为isEqual:正在测试它们各自表示的值是否相等。

您无法通过引用可靠地比较对象,您需要使用isEqual: