2017-04-08 12 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> 

私は何か間違っているかどうか教えてください。 実際には、これらのobjectIdをキューに入れておき、これらのobjectIdsに基づいてオブジェクトをデキューする必要があります

おかげ Ankit

+0

どちらの場合でも、 ' 'です。どのような問題を解決しようとしていますか? –

+0

@TomHarrington私はこれらのobjectIdを配列に保っているので、配列にオブジェクトIDが含まれているかどうかを確認する必要があります –

答えて

1

あなたは各オブジェクトIDは、オブジェクトIDが格納されているメモリのアドレスで印刷するとき、あなたが見ている唯一の違い。

したがって、これらの2つのオブジェクトを使用して==と比較すると、それらは参照平等をテストしているため、異なることになります。

これら2つのオブジェクトをisEqual:と比較すると、isEqual:はそれぞれが表す値が等しいかどうかをテストしているためtrueを返します。

参照によってオブジェクトを確実に比較することはできません。isEqual:を使用する必要があります。

関連する問題