2017-04-08 71 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: