アプリの将来の更新を簡素化するために、コアデータモデルのユーザーデータから参照データを分離したいと思います(データベースをクラウドに保存する予定であり、参照データをクラウドに保存する必要がないため)これは私のアプリケーションの一部です)。したがって、フェッチされたプロパティを使用してストア間の関係をコーディングする方法をしばらく探していました。これの実装例は見つかりませんでした。
2つの構成を使用するCoreDataモデルがあります。
データモデル構成1:UserData(ユーザーに関連するエンティティ)
データモデル構成2:ReferenceData(アプリケーション自体に関連するエンティティ)
両方の構成に2つの異なるSQLite永続ストアを設定しました。
UserData構成(およびストア)にエンティティ「User」が含まれています
ReferenceData構成(およびストア)には、エンティティ「Type」および「Item」が含まれています。
以下のように、2つの一方向の弱い関係を作成したいと思います。
「ユーザー」には固有の「タイプ」があります
「ユーザー」には多くの「アイテム」があります
これが私の質問です:
プロパティを設定するにはどうすればよいですか?
リレーションごとに2つのプロパティが必要ですか(1つは一意のIDを保存するためのもので、もう1つはフェッチした結果にアクセスするためのものです)。
この弱い関係を注文することはできますか?
誰かが私にこれの実装例を教えてもらえますか?
マーカスの答えに続くものとして:
フォーラムとドキュメントを見ると、objectIDの代わりにエンティティインスタンスのURI表現を使用する必要があることがわかりました。この背後にある理由は何ですか?
// Get the URI of my object to reference
NSURL * uriObjectB [[myObjectB objectID] URIRepresentation];
次に、オブジェクトBのURI(NSURL)を親オブジェクトAに弱い関係として保存するにはどうすればよいでしょうか。どの属性タイプを使用する必要がありますか?これを変換するにはどうすればよいですか?アーカイブについて聞いた...?
次に、後で同じ方法で管理対象オブジェクトを取得し(URIRepresentationを変換解除/アーカイブ解除することにより)、URIからオブジェクトを取得する必要があります
// Get the Object ID from the URI
NSManagedObjectID* idObjectB = [storeCoordinator managedObjectIDForURIRepresentation:[[myManagedObject objectID] URIRepresentation]];
// Get the Managed Object for the idOjectB ...
最後になりましたが、shouIdは、エンティティAで2つのプロパティを宣言します。1つはURIのニーズを永続化するためのもので、もう1つは直接オブジェクトBを取得するためのものですか。
NSURL * uriObjectB [objectA uriObjectB];
ObjectB * myObjectB = [objectA objectB];
あなたが読むことができるように、私は本当に弱い関係を実装するためのいくつかの簡単な例を見逃しています!助けていただければ幸いです。