0

wタスクの3つのリストをフィルタリングするために、3つのフェッチコントローラーを使用しています。今日、明日、そして最後に後のタスク。その場合、私には3つの述語があります。

NSPredicate *todayPredicate = [NSPredicate predicateWithFormat:@"(date <= %@) AND isDone == 0",
                                   [self getEndDateForDay:P_Section_Today]];
NSPredicate *tomorrowPredicate = [NSPredicate predicateWithFormat:@"((date >= %@) AND (date <= %@)) AND isDone == 0",
                                   [self getStartDateForDay:P_Section_Tomorrow],
                                   [self getEndDateForDay:P_Section_Tomorrow]];
NSPredicate *laterPredicate = [NSPredicate predicateWithFormat:@"date >= %@ AND isDone == 0",
                                      [self getStartDateForDay:P_Section_Later]];

満足しました。それは魅力のように機能しました。一晩中、私は次の問題に直面するまで。3つのコントローラーはそれ自体を更新しません。

例:-日曜日にアプリを起動しました。(現在、今日は日曜日です。)-アプリはまだ実行中です。-月曜日の朝にアプリを開きました。-月曜日に新しいタスクを追加しました。それは今日の仕事に現れるでしょう?いいえ、明日のタスクに表示されます。バックグラウンドからアプリを閉じて再度起動する以外は、修正はありません。

performFetchは述語とともにフェッチコントローラを更新すると思いましたが、そうではありません。そのための修正はありますか?

4

1 に答える 1

0

述語の日付は作成時に固定されます。つまり、getStartDateForDay:andgetEndDateForDay:は自動的に再度呼び出されることはありません。日が変わったことを検出したら、述語を更新する必要があります。

于 2012-10-29T04:32:02.680 に答える