11

NSArrayController のコンテンツを、順序付けられた対多の関係でエンティティにバインドするにはどうすればよいですか?

Core Data モデルに順不同の対多関係があり、コンテンツ セットが親エンティティからその関係にバインドされている NSArrayController があります。これは問題なく動作し、NSArrayController からデータにアクセスできます。問題ありません。

開発中に、ユーザーがこれらの子オブジェクトを手動で並べ替えられるようにした方がよいと判断したため、関係を順序付きに変更しました。現在、NSArrayController が nib から作成されているときに、次のエラーが表示されます。

Cannot create NSSet from object Relationship '...' fault on managed object ... of class _NSFaultingMutableOrderedSet

実際、これはすべて理にかなっていると思います。これは順序付けられた関係であるため、順序付けられたセットを取得しています。これを Content Array にバインドすることも不適切です。配列ではなく NSOrderedSet になっているためです。私の質問は次のとおりです。この関係のデータを NSArrayController にバインドするにはどうすればよいですか?

4

2 に答える 2

11

この分野で新たな進展があったかどうかを調べているときに、この議論に出くわしました。配送アプリでは、現在、配列コントローラーのコンテンツ配列をバインドしていorderedSetKey.@arrayますが、問題なく動作します。自分で発見したのか、他の誰かがどこかで提案したのかはわかりません。

于 2013-10-21T01:25:54.203 に答える
9

根本的な問題は、Core Data の順序付けられた対多の関係が NSOrderedSet を返し、NSOrderedSet が NSSet のサブクラスではないことです。NSSet を期待するアレイ コントローラ バインディングはすべて失敗します。

Tom Fewster は、NSValueTransformer を使用してこの欠点を回避し、NSOrderedSet と NSArray をオンザフライで変換する方法を説明した詳細なブログ投稿を行っています。また、Github でサンプル実装を提供しています。

于 2013-03-24T23:55:52.087 に答える