我试图在简单的核心数据实现中按对象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
答案 0 :(得分:2)
打印每个对象ID时,您所看到的唯一区别是存储对象ID的内存中的地址。
所以,如果你拿这两个对象并将它们与==
进行比较,它们会有所不同,因为那是测试参照相等。
如果将这两个对象与isEqual:
进行比较,它将返回true,因为isEqual:
正在测试它们各自表示的值是否相等。
您无法通过引用可靠地比较对象,您需要使用isEqual:
。