0

UITableViewCore Data を使用してデータベースからデータを取得し、 を介してのカスタム セルに表示するアプリケーションがありますNSFetchedResultsController。同じデータベースからデータを取得せず、UITableViewCell.

NSFetchedResultsControllerUITableViewData Source メソッドの中間に入る方法に少し困惑しています。取り込まれたデータを並べ替えたり、フィルター処理したりできるようにするさまざまなオプションがあるため、indexPath などの使用に頼ることはできません。

このようなことをするための最良のアプローチは何ですか? fetchedObjectsにアクセスできることはわかっていますNSFetchedResultsController– それをコピーして変更することは正しい方法ですか? fetchedObjectWithInterstitialCellsその配列の内容を使用して、すべての Data Source および Delegate メソッドを作成し、たとえば、フィードしますか?

より良い方法はありますか / それを行う別の方法はありますか? データベースからのデータを並べ替え/変更/フィルタリングする機能を保持できる必要がありますが、これらの隙間セルを常に同じ間隔でランダムに 10 ~ 20 セルごとに維持する必要があります。

4

1 に答える 1

1

次の3つの操作のいずれかを検討します。

A:他のデータと一緒にプルされるオブジェクトをデータベースに挿入しますが、UITableViewCellの異なるサブクラスを表示するのに十分なほどそれらを区別するためのプロパティがあります。非常に難しいデータモデルがない限り、おそらく最も簡単な方法です。

sectionNameKeyPathB:の-属性を使用してデータストアのデータをセクションにグループ化できる場合はNSFetchedResultsControllerNSFetchedResultsController+ -アプローチを選択してから内部UITableViewDataSourceに戻ります。[[self.fetchedResultsController sections] count] + numberOfInterstitialCells;numberOfSectionsInTableView:

次に、 FetchedResultscontrollercellForRowAtIndexPathからの適切なオブジェクトとインタースティシャルセルを切り替えるために、インデックスパスからのセクション情報をオーバーライドする必要があります。これはおそらく面倒で難しい方法ですが、iOS6でparentContextsを使用している場合は、を実装したことによるメリットNSFetchedResultsControllerDelegateは素晴らしいです。

UITableViewDataSourceC:ビューをロードしてこの配列をフィードする前に、通常のfetchrequestを使用してオブジェクトをフェッチし、インタースティシャルセルを挿入する可変配列に配置します。オプションAと同じくらい簡単ですが、NSFetchedResults-Controllerを使用するメリットは得られません。

于 2013-02-27T20:21:00.670 に答える