コアデータエンティティごとに明示的なカスタムID属性をPKとして設定する必要がありますか?コアデータが独自のobjectID column for every entityを使用していることを認識しており、[NSManagedObject objectID]から取得できます。NSManagedObjectを使用しても安全ですか?objectID:レコードフィルタリング、テーブル結合などのためにPKとして使用しますか?
私の以前のプロジェクトは、生のSQLiteを使用していましたが、今はコアデータに移行しようとしています。現在、私のコアデータのプロトタイプでは、私は私のカスタムのID列使用してレコードをフィルタリングしています:
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"my_id=%d",some_id_value]];
興味があるだけに、私は、カスタムID属性で自分を気にする必要があり、または私は内部のObjectID列に依存している必要があります。ここでそれを渡し、フィルタリング、テーブル結合などに使用しますか?
これは確かにこの特定の要求に対する良い回答ですが、たとえばIDなどのコアデータオブジェクトを参照する必要があるいくつかの特定の状況があります。たとえば、同期エンジンの作成です。また、Core Dataをマルチスレッド化する方法の中には、スレッド間でオブジェクトIDを渡す必要があるものもあります。つまり、一般的には(クエリー、フェッチなどのために)、IDで作業する必要はありません。 –
@AmyWorrall Tottalyがあなたに同意します。それを明確にしてくれてありがとう。 – Alladinian
ありがとうございます。しかし、オブジェクトを識別子でどのようにフィルタリングする必要がありますか?最も一般的なのは、具体的なオブジェクト(レコード)を取得し、具体的なオブジェクト(レコード)を保存することです。私の現在のコード(setPredicate、my_id)を置き換えることをどのように提案しますか?それでも、テーブルIDにマップされた識別子を持たずに具体的なオブジェクトを更新、選択、削除する方法がわかりません。 – Centurion