2011-01-10 15 views
0

私はこれをしばらく研究していますが、私はいくつかの解決策があると思いますが、それらが良いとは確信できません。それは私が何かを逃したことがあります:-)テーブルビュー、コアデータNSSetからのレコードを正しい順序で表示

私は2つのテーブルがあります。 TableAの各レコードには、TableBに複数のレコードがあります。私。 1対多数の関係。私はそれをコアデータにマッピングし、クラスを生成しました。ここまでは順調ですね。私は、彼らは、単一の表レコードの異なるフィールドであるため、私のtableView:cellForRowAtIndexPath:それはセクション1個の細胞を処理するのは簡単ですしている時

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 
.... 

:UIベース

私のテーブルビューは次のようになりする必要があります。セクション2のセルは異なります。 tableView:cellForRowAtIndexPath:が呼び出されるたびに、テーブルAのNSSetから正しいテーブルBレコードを取得する必要があります。それは問題です。

NSSet docoは、注文を守らないことを示します。これは私がインデックスに基づいて特定のレコードをしたい場合、私はいくつかの可能な技術を持っていることを意味します

  • コアデータクエリにソート記述子を追加し、私がしたいレコードを取得するには、高速列挙体を使用しています。私たちがまだNSSetで作業しているので、これがうまくいくかどうかわかりません。
  • NSArrayを生成するためにデータを取得した後、ソート記述子を使用してNSSetをソートし、テーブルロードを開始する前にプロパティに格納します。
  • NSArrayのように動作するNSSetのデコレータを記述し、ソートフィールドを指定してNSSetの変更を自動的に追跡できる3番目のオプションを考えています。トリッキーだが、長期的には恩恵を受けるかもしれない。

どちらの回答も素晴らしいとは思われません。これを行うより良い方法はありますか?

答えて

0

NSArrayがコントローラに保存され、NSSetレコードがNSArrayにソートされました。

1

オブジェクトが必要な場合は、NSSetアクセサを使用します。

オブジェクトをソートする場合は、NSFetchRequestを設定し、適切なNSSortDescriptorsを追加します。

そして、単にこれのtableViewのために特別にあるので、テーブルビューを移入するNSFetchedResultsControllerを使用し、さらに良いexecuteFetchRequest:error:

でフェッチを行います。それがそこにあるのです。

関連する問題