次のようなモデルがあります。
UITableView
を使用して表示したいNSFetchedResultsController
。でグループ化されObject
た、特定の のすべての をリストしたいと思います。たとえば、ある所有者のグループを表示する場合、テーブル ビューは次のようになります。Owner
Group
Owner A
Group A
Object A
Object B
Object C
Group B
Object A
Object D
Group C
Group D
Object C
Object E
name
また、グループがその属性 (上記のスキーマには示されていません)で順序付けられていること、およびNSFetchedResultsController
オブジェクトが変更されたり、グループから追加/削除されたりするたびにデリゲート メソッドが呼び出されることも重要です。
これらの要件を考慮して、のような述語を使用して一連のNSFetchedResultsController
をフェッチするように を設定しました。これにより、 「to-many key not allowed here」という例外がスローされます。他のいくつかの述語を試しましたが、行き詰まっています。Object
[NSPredicate predicateWithFormat:@"ANY groups.owner = %@", someOwner]
NSInvalidArgumentException
助言がありますか?これは私が使用すべきものではありませんNSFetchedResultsController
か?または、データをモデル化するためのより良い方法はありますか?
ありがとう!
編集:実際に上記のコードで述語が機能するようになりました。私の間違いは私のsectionNameKeyPath
議論にありました。を渡そうとしましたがgroups.name
、これがエラーの原因でした。その方法がうまくいかない理由はわかりますが、望ましい結果を達成するための別の方法を見つけるのに苦労しています。おそらく結合オブジェクトですか?
編集 2:これは、次のような結合オブジェクトでうまく機能します。
私が今見ている2つの欠点があります。1 つ目は、コードを使用して独自性を強制する必要があることです。それは簡単ですが、少し面倒です。2 つ目の欠点は、これを回避する方法がまだわかりませんが、 がNSFetchedResultsController
更新のためにデリゲートを呼び出さObjects
ないことです。私は今のところその欠点に耐えることができますが、より良い提案を聞いてうれしく思います.