NSPredicate可以按时间或小时进行过滤,而与其他日期成分无关

时间:2019-01-19 18:57:03

标签: ios nsdate nspredicate

我知道如何按日期范围过滤数组或一组fetchedResults。如何按一天中的下午3点到下午5点进行过滤。

关于SO的一些答案说,对于SQLLite支持的MOC,您无法执行此操作,而必须获取所有结果并进行过滤。但是,我不知道如何过滤。

您可以在特定日期使用以下方法过滤从下午3点到下午5点:

NSCalendar *myCal = [NSCalendar currentCalendar];
    myCal.timeZone = [NSTimeZone localTimeZone];
    NSDate *startOfDay = [myCal startOfDayForDate:[NSDate date]];
    NSDate *noon = [myCal dateByAddingUnit:NSCalendarUnitHour
                                        value:12
                                       toDate:startOfDay
                                      options:0];


    NSDate *threepm = [myCal dateByAddingUnit:NSCalendarUnitHour
                                       value:15
                                      toDate:startOfDay
                                     options:0];

     NSPredicate *fivepmPred = [NSPredicate predicateWithFormat:@"starttime <= %@", fivepm];
  NSPredicate *threepmPred = [NSPredicate predicateWithFormat:@"starttime >= %@", threepm];
NSMutableArray *subPredicates = [NSMutableArray arrayWithCapacity:10];
    [subPredicates addObject:fivepmPred];
    [subPredicates addObject:threePred];

但是,对于每天下午3点到5点,您如何独立于一天过滤大约一个月的一组结果

提前感谢任何想法。

0 个答案:

没有答案