0

我正在使用三个 fetch 控制器来过滤三个任务列表;今天,明天,最后是以后的任务。对于这种情况,我有三个谓词:

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]];

我很高兴。它就像一个魅力。直到,一个晚上,我遇到了以下问题。三个控制器不会自行更新。

示例: - 周日启动应用程序。(现在,今天是星期天。)。- 该应用程序仍在运行。- 周一早上打开应用程序。- 增加了周一的新任务。应该会出现在今天的任务中吧?不!,它出现在明天的任务中。除了从后台关闭应用程序并再次启动它之外,没有解决方法。

我确实认为performFetch确实会更新 fetch 控制器及其谓词,但事实并非如此。有解决办法吗?

4

1 回答 1

0

谓词中的日期在您创建它们时是固定的,即您的getStartDateForDay:getEndDateForDay:不会被自动再次调用。当您检测到日期已更改时,您需要更新谓词。

于 2012-10-29T04:32:02.680 回答