ドキュメントとこの回答からの私の理解では、データが存在する場合、NSManagedObjectContext のメソッドexistingObjectWithID:error:
とobjectWithID:
メソッドは同じオブジェクトを返す必要がありますが、データが存在しない場合existingObjectWithID:error:
は返されますが、データの代わりに障害のあるオブジェクトが返されますnil
。objectWithID:
私がアプリケーションで見ているのは、(子マネージド オブジェクト コンテキスト内のバックグラウンド スレッドでオブジェクトを作成して保存した後、メイン スレッドに移動して保存し、オブジェクト ID を子コンテキストから親オブジェクト コンテキスト) をexistingObjectWithID:error:
返しますnil
が、objectWithID:
フォールトではなく、有効なデータを持つ実際に使用可能なオブジェクトを返します。
2 つの方法についての私の理解は間違っていますか? 私は何か間違ったことをしていますか?
(私は return nil
--when-there's-no-data の動作がexistingObjectWithID:error:
必要ですが、新しく作成されたオブジェクトのデータを取得できないことが問題です。)
編集: を使用objectWithID:
して、すぐに try-catch ブロック内で返されたオブジェクトのプロパティへのアクセスをテストし、スローされた例外をキャッチし、偽造されたオブジェクトをnil
(ここで行われているように) に置き換えることができると思いますが、try-catch は高価ですObjective-Cとこれは本当に悪い考えのようです。