2017-04-08 73 views
0

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

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> 

请让我知道如果我做错了什么。 实际上,我将这些objectIds保留在队列中,并且需要根据这些objectIds将对象退出队列。

感谢 ANKIT

+0

在这两种情况下都是''。你想解决什么问题? –

+0

@TomHarrington我将这些objectIds保存在一个数组中,并且需要检查数组是否包含对象标识符 –

回答

1

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

因此,如果您将这两个对象与==进行比较,它们将会不同,因为这是测试引用相等。

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

您无法通过参考可靠地比较对象,因此需要使用isEqual: