コアデータクロスストレージフェッチプロパティ
-
13-12-2019 - |
質問
現在、コアデータでいくつかの問題を回復しています。 私は自分自身の店に1つの user モデルを持っています。このモデルの永続ストアコーディネータ、管理対象オブジェクトモデル、およびコンテキストが自動的に作成され、タッチできません。その中では、このモデルには単一の user エンティティ
があります。一方、プロパティエンティティを備えたプロパティモデルは、完全な制御を完全にしています。そこでは、他のストア内の user エンティティのプロパティを保存します。ユーザーとプロパティエンティティの両方に、外部キーと同様の id 属性があります。 このモデルはそれ自身の永続的なストアのCordinator、管理対象のモデルとコンテキストです。
私が望んでいるのは、プロパティエンティティの属性として関連付けられている user>エンティティを、myproperty.user.someValueOfTheUserEntity
と同様のキーパスにバインドできる可能性がある場合があります。取得されたプロパティを使用するときにMyPropertyが配列になる可能性があることを知っています。
しかし、クロスストア関係はサポートされていないので、フェッチされたプロパティを介して弱い関係を使用することを考えると考えられています。その2つの対応する ID 属性と一致させる必要があるだけであろう。 Xcodeの user のフェッチされたプロパティとマイプロパティエンティティのクラスファイルの必須アクセサリには、(他の質問で提案されているように、によって返される値を扱いています。アレイとしてのフェッチされたプロパティ)。
しかしながら、ターゲットエンティティがまったく異なるストアにあるため、Xcodeでフェッチされたプロパティの宛先エンティティを設定することはできません。 プロパティストアに、私の user エンティティを定義する必要がありますか?もしそうなら、そのエンティティが私のプロパティストアからではなく、ユーザーストアから取得されることをコアデータであることをどのように知っていますか?
これの設定を使用して言及されているスレッドの中には、「これの設定の使用」を言及するよりもさらに行く文書が見つかりません。
誰かがクロスストレージフェッチプロパティを設定する方法について私を照明することができますか? #
解決
同じデータモデルを共有する永続ストアをいくつか使用することができます。
- シングルデータモデル(XcDataModeld)を使用して、すべてのエンティティを追加
- 「論理セット」ごとに設定(エディタ/追加設定)を作成します。 別のストアファイル に保存する必要があるエンティティ
- 適切な構成にエンティティを割り当て(ドラッグ)します
- 設定された永続ストアをコンテキストに追加します(下記参照)
- フェッチされたプロパティを設定
.// 1. Add "static", read-only store [coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"your static configuration name goes here..." URL:storeUrl options:@{ NSReadOnlyPersistentStoreOption: @(YES), NSInferMappingModelAutomaticallyOption : @(YES) } error:&error]; // 2. Add "dynamic", writable content [coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"your dynamic configuration name goes here..." URL:storeUrl options:@{ NSMigratePersistentStoresAutomaticallyOption: @(YES), NSInferMappingModelAutomaticallyOption : @(YES) } error:&error];