NSPredicate для фильтрации по времени или часу независимо от других компонентов даты - PullRequest
0 голосов
/ 19 января 2019

Я знаю, как фильтровать массив или набор fetchedResults по диапазонам дат.Как выполнять фильтрацию по времени дня, как в 15:00 - 17:00.

В некоторых ответах SO говорится, что вы не можете сделать это для MOC с поддержкой SQLLite, и вам нужно получить все результаты и выполнить фильтрацию.Тем не менее, я не могу понять, как фильтровать.

Вы можете фильтровать от 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];

Но как вы фильтруете набор результатов помесяц или около того с 15:00 до 17:00, независимо от дня

Заранее благодарим за любые идеи.

...