我试图在一个简单的核心数据实现中通过对象ID来获取对象。使用此api
let targetObj = CoreDataManager.sharedInstance.privateQueueContext.object(with: self.objectID) as! MyObj但似乎对象标识发生了变化。这是控制台日志
(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>如果我做错了什么请告诉我。实际上,是将这些objectIds保存在一个队列中的书,并且需要根据这些objectIds来对对象进行去队列。
谢谢安吉
发布于 2017-04-08 21:41:00
打印每个对象ID时看到的唯一区别是存储对象ID的内存中的地址。
因此,如果将这两个对象与==进行比较,它们将是不同的,因为这是在测试引用相等性。
如果将这两个对象与isEqual:进行比较,它将返回true,因为isEqual:正在测试它们各自表示的值是否相等。
您不能通过引用可靠地比较对象,需要使用isEqual:。
https://stackoverflow.com/questions/43298081
复制相似问题