1

name(String)、hitCount(Int)、lastUpdated(Date)およびcontents(OrderedSet)のいずれかのプロパティに、 "List"タイプのManagedObjectを取得するCoreDataフェッチ要求を行う必要があります。 。これで、Listオブジェクトのcontentsプロパティ内の "Media" ManagedObjectsをTableViewに挿入する必要があります。私はすでにリストのインスタンスを持っているときに誰がCoreDataで、すでにあるものを私に与えている... ...私は私が試したしたいNSFetchedResultsControllerを使用してオブジェクトのプロパティを取得する

let fetchRequest = NSFetchRequest<Media>(entityName: "Media") 
fetchRequest.predicate = NSPredicate(format: "SELF in %@", list.contents) 

を内容だが、追加のオブジェクト上の任意のNSFetchedResultsControllerDelegateのアップデートは、ネットワークを介して得られていません私の最初のグラブの後にデータベースに追加されました。ないテーブルビューに適用するために必要な実際の変更( - 私も...だけListオブジェクト自体のタイプの動きの、リスト項目を返し、私はNSFetchedResultsControllerDelegateの更新を取得します

let fetchRequest = NSFetchRequest<Media>(entityName: "List") 
fetchRequest.predicate = NSPredicate(format: "name == %@", list.name) 

を...試してみました削除/挿入など)を行うことができます。私がやろうとしていることを達成する方法はありますか?どんな助けでも大歓迎です。

+1

メディアとリストの間に逆の関係がありますか?そうであれば、それはto-oneかto-manyですか:Mediaオブジェクトは複数のListに関連することができますか? (必要な述語はそれぞれのケースで異なります)。 – pbasdf

+0

はい、逆の関係があります。 MediaオブジェクトにマップされるListオブジェクトのcontentsプロパティはto-many型です。今のところMediaオブジェクトからListオブジェクトへの逆の関係は1対1の型ですが、Mediaオブジェクトは複数のリストに存在する可能性があるので、両側は多対多型にする必要があります。 –

答えて

1

逆の関係が一対一であれば、あなたが使用することができ、listRelationshipと呼ばれる:FetchedResultsControllerの基礎となるフェッチなど

let fetchRequest = NSFetchRequest<Media>(entityName: "Media") 
fetchRequest.predicate = NSPredicate(format: "listRelationship == %@", list) 

。関係がto-manyの場合、述部を "ANY listRelationship ==%@"に変更してください。どちらの場合でも、FRCが使用するソート順がListオブジェクトのNSOrderedSetと一致することを確認することは困難です。

重要な場合は、インデックス属性を使用してソート順を明示的にモデル化する必要があります。関係がto-oneの場合、Mediaエンティティにindex属性を追加できますが、to-manyの場合、人生はより困難になります。Mediaオブジェクトは1つのリストの最初のアイテムになる可能性がありますが、リスト - インデックスは特定のリストと特定のメディアアイテムに関連します。その場合、別のエンティティ "ListEntry"をindex属性と1対1の関係をListMedia(それぞれが多対多のもの)に追加します。

関連する問題