0

概要

  • コアデータ(NSFetchedResultsController)とテーブルビューを使用するiOSプロジェクトがあります。「joingDate」というフィールドがあります。

  • テーブルビューセルには、データを表す一連のラベルがあります。

  • joinDateがtoday/tomorrowの場合、実際の日付を指定するのではなく、「today」または「tomorrow」と表示したいと思います。

  • ちょうど考えていたのですが、lastCheckedDate(日付が最後にチェックされた時刻)をチェックし、それが1日を超える場合は、結合日と「今日」または「明日"。

  • データベースでは、「JoiningDate」は日付として保存され、ラベルのみが「今日」/「明日」/日付を特定の形式で表示する必要があります。

次のメソッドを実装しました。このメソッドでは、ラベル「joingDateComments」が現在の日付に基づいて更新されます。

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath

質問

注-私は使用していますNSFetchedResultsController

  1. joiningDate今日/明日と同じであるすべての行ラベルを更新するための最良のアプローチは何ですか?
  2. テーブル内のすべてのレコードをリロードする必要がありますか?(ただし、これは数行にのみ影響します。)
  3. すべてのインデックスをループしてチェックして更新する必要があります。を使用しているため、これが機能するかどうかはわかりませんNSFetchedResultsController
  4. 一時データを使用して、データベースにクエリを実行し、今日/明日として「JoingDate」を持つレコードを取得して一時フィールドを更新JoingDateCommentsし、それらのレコードがNSFetchedResultsControllerによって自動的に更新されるようにする必要があります。

答え:

plsはアンドリューのコメントを通過します。

4

1 に答える 1

2

user1046037、

これは実際にはCoreDataの質問ではなく、UITableViewの質問です。ほとんどすべてが-tableView:cellForRowAtIndexPath:メソッドで処理されます。そこで、セルの表現方法を選択します。他の場所はNSFetchedResultsController、変更されたオブジェクトであなたに電話をかけるときです。(標準のCore Dataテーブルビューコントローラーがこのボイラープレートを作成します。)つまり、すべてのオブジェクトをループする必要はありません。これらのセルがいつ更新されるかをより細かく制御したい場合は、保存完了通知をリッスンできます。次に、tableViewに表示されているセルの配列を照会します。次に、セルインデックスパスを使用して、セルの内容を更新できます。

アンドリュー

于 2012-05-27T14:45:40.197 に答える