0

我需要一些关于谓词的建议。在我的应用程序中,我希望能够按日期过滤结果。在我使用 2 个单独的谓词并检查是否设置了过滤器之前。

if (self.isDateFilterSet==[NSNumber numberWithBool:NO])
{

fetchRequest.predicate = [NSPredicate predicateWithFormat:@" whoRecorded.username = %@ AND deleted=0", [self.settings.currentUser username]];
}
else
{
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@" (whoRecorded.username = %@) AND (deleted = 0) AND (date =>%@) AND (date<=%@)", [self.settings.currentUser username],self.dateMinSetFilter ,self.dateMaxSetFilter];


}

我正在清理我的代码,并决定始终将日期保留在谓词中,并在每次更新时检查日期。但是,当我插入新数据时,不会调用委托方法,因为 date<=%@ 不满意。

你能建议我处理这种情况的正确方法吗?

4

1 回答 1

1

当用户没有指定要过滤的日期时,不要使用数据库中的最小值和最大值。你知道你想要所有东西,所以设置最小值[NSDate distantPast]和最大值[NSDate distantFuture],然后你保证涵盖所有内容。


添加方法:

- (void)resetDateFilters {
    self.dateMinSetFilter = [NSDate distantPast];
    self.dateMaxSetFilter = [NSDate distantFuture];

    // destroy the FRC here, delete cache if necessary
}

在视图中调用它确实加载(这是初始设置)。每当用户想要重置过滤器时调用它。

于 2013-11-11T20:26:46.347 回答