私はこれをしばらく研究してきましたが、多くの解決策があると思いますが、それらがそれほど優れているかどうかはわかりません. 私が何かを見逃しているのかもしれません:-)
私は2つのテーブルを持っています。TableA の各レコードに対して、TableB には複数のレコードがあります。つまり、一対多の関係です。私はそれをコアデータにマッピングし、クラスを生成しました。ここまでは順調ですね。
テーブル ビュー ベースの UI は、次のようにする必要があります。
Section 1
Cell 1: Table A: field1
Cell 2: Table A: field2
-----
Section 2
Cell 1: Table B: record 1: field1
Cell 2: Table B: record 2: field1
....
セクションtableView:cellForRowAtIndexPath:1 のセルはテーブル A の 1 つのレコードとは異なるフィールドであるため、簡単に処理できます。セクション 2 のセルが異なります。が呼び出されるたびtableView:cellForRowAtIndexPath:に、テーブル A の NSSet から正しいテーブル B レコードを取得する必要があります。そして、それが問題です。
NSSet docoは、注文を保証しないことを示します。つまり、インデックスに基づいて特定のレコードが必要な場合、いくつかの可能な手法があります。
- コア データ クエリに並べ替え記述子を追加し、高速列挙を使用して必要なレコードを取得します。まだ NSSet を使用しているため、これが機能するかどうかはわかりません。
- データを取得して NSArray を生成した後、並べ替え記述子を使用して NSSet を並べ替え、テーブルの読み込みを開始する前にそれをプロパティに格納します。
- 私は現在、NSArray のように動作し、並べ替えフィールドを指定して NSSet への変更を自動的に追跡できるようにする NSSet のデコレータを作成するという 3 番目のオプションを考えています。トリッキーですが、長期的には報われる可能性があります。
これらの答えはどちらもそれほど素晴らしいようには見えません。これを行うより良い方法はありますか?