1

私は自分の問題を解決する方法を考え出そうとしていますが、考えられる解決策はどれも面倒で、吐き気がします.

多くの Member オブジェクトを持つことができる Team オブジェクトで構成される 1 対多の関係があります。Xcode を使用してデータ モデルを構築したとき、メンバー オブジェクトを格納するための既定の NSSet が与えられました。メンバー。

NSSet の代わりに NSArray を使用し、Member オブジェクト間の空きスペースをマークするために使用できるダミーの Member オブジェクトをデータ ストアに作成することを考えましたが、その解決策は私にはハックが多すぎるように感じます。クエリからこのダミーメンバーを常に除外する必要があるためです。

NSDictionary は、Member オブジェクトの参照とその位置をオブジェクトとキーのペアとして格納できるため (順序と空席の両方を処理して) 完璧ですが、明らかに CoreData は NSDictionary をサポートしていません。

誰かが同様のニーズを持っていて、簡単な解決策を考案しましたか?

4

2 に答える 2

4

順序付けられた関係を実装するのは簡単です。NSManagedObject サブクラスの 1 つに対して行ったコードを次に示します。

(何らかの理由で、今日は書式設定されたコードを Stackoverflow に投稿できません。)

この場合、次のような関係が設定されています。

AlphaEnity<-->>AlphaToBetaEntity<<-->BetaEntity

AlphaToBetaEntity にはorder属性があります。AlphaToBetaEntity をソートし、必要に応じてリンクされた BetaEntity を返します。古い学校の C でポインターの並べ替えを行うようなものです。

これには、非常に大きなセットで非常に高速であるという利点があり、BetaEntity から属性を読み取る必要があるまで、BetaEntity で障害を起こす必要はありません。

于 2010-03-20T20:46:42.473 に答える
3

順序付けられた Core Data 対多の関係の欠如は、基礎となるデータベース設計の成果物です。この理由と考えられる解決策については、この Cocoa メーリング リストのスレッドで説明されています。解決策には、管理対象オブジェクトにインデックス プロパティを追加するか、これらのオブジェクトをリンク リストで維持することが含まれます。

これを自分で行いたくない場合は、Brian Webster が順序付けられた対多コア データ関係の実装をここにまとめました。

最後に、Core Data からの切り替えを検討している場合は、Aaron Hillegass の新しいBNRPersistence フレームワークが順序付けられた関係をサポートしています。

于 2010-03-20T20:31:01.963 に答える