У меня есть представление UITable, которое содержит список NSManagedObjects с именем Assignment.Я использую NSPredicate для фильтрации списка.Я фильтрую задания, которые должны отображаться для игрока сегодня и вчера:
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"player == %@ AND (day == %@ OR day == %@)",
player,
[NSNumber numberWithInt:[self todaysDayNumber]],
[NSNumber numberWithInt:[self yesterdaysDayNumber]]];
Мне нужно добавить дополнительный уровень фильтрации.Я хочу отфильтровать задания, которые должны показываться только раз в две недели.Поэтому я добавил эти методы в Assigment:
-(BOOL)thisWeeks{
//If this is a weekly assigment
if ([self.weekly boolValue]) {
return YES;
}
//Determine the week number
NSCalendar *calendar = [NSCalendar currentCalendar];
NSUInteger unitFlags = NSWeekCalendarUnit;
NSDateComponents *dateComponents = [calendar components:unitFlags
fromDate:[NSDate date]];
NSUInteger week = [dateComponents week];
//Assigned week even?
if ([self.weekNumber intValue] % 2){
//Current week even?
if (week % 2) {
return YES;
}
}
//Assigned week odd?
if (!week % 2) {
//Current week odd?
if (![self.weekNumber intValue] % 2){
return YES;
}
}
//Should not be shown this week.
return NO;
}
возможно ли использовать этот вспомогательный метод "thisWeeks" в качестве фильтра в NSPredicate?
Если я "делаю это неправильно",Я мог бы вручную отфильтровать полученные результаты, но я не уверен, как поместить результаты обратно в NSFetchedResultsController так, чтобы мое представление UITable могло продолжать использовать NSFetchedResultsController.