これらすべての「NSOrderedSet は後で追加されたため、他のコンポーネントとうまく連携する必要はありません」というバグは私を夢中にさせます…</p>
2 つのマネージド オブジェクトと、それらの間の順序付けられた 1:N の関係がありますNSOrderedSet
。NSArrayController
が提供する機能 (選択管理、コンテンツのバインディング、 のようなビューへのバインディング) から利益を得るために、を使用してこの関係を管理したいと考えていますNSTableView
。
NSOrderedSet
は のサブクラスではないため、NSSet
のcontentSet
バインディングはNSArrayController
その関係では機能しません。次のスレッドを見つけて、そこに記載されている提案を実装しようとしました。
最初の提案はcontentArray
、順序付けられたセットをオンザフライで配列に変換するためにバインディングと値トランスフォーマーを使用することです。このソリューションの問題は、変更が行われるたびにコンテンツが再割り当てされることです。これは私が望んでいるものではありません。
前述のスレッドで提供されている 2 番目の提案は、contentArray
バインディングを使用し、@array
演算子をモデル キー パスに適用することです。私はそれを試しましたが、NSArrayController
.
contentSet
私が見つけた別のオプションは、バインディングでソート記述子を使用することです。contentSet
これには、バインディングを機能させるためにリレーションを順序なしにし、特に順序を管理するために使用される新しい属性を導入する必要があります。これにはさらに、カスタムの順序付けメカニズムを実装する必要があり、モデルが台無しになります。正直なところ、この解決策は避けたいと思います。
私の質問は非常に明確です: を使用して順序付けられた Core Data 関係を管理する方法はありますNSArrayController
か? もしそうなら、できるだけ痛みを少なくする最善の方法はどれですか?