0
我有一個UITable視圖,其中包含一個名爲Assignment的NSManagedObjects列表。我正在使用NSPredicate來過濾列表。 我過濾分配應顯示今天和昨天的玩家:使用NSManagedObject的幫助器方法進行NSPredicate過濾
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"player == %@ AND (day == %@ OR day == %@)",
player,
[NSNumber numberWithInt:[self todaysDayNumber]],
[NSNumber numberWithInt:[self yesterdaysDayNumber]]];
我需要添加過濾的級別。我想過濾掉只應該每兩週顯示一次的作業。所以我說這個方法來分配新建分配FY:
-(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;
}
是有可能使用這個helper方法「thisWeeks」作爲NSPredicate過濾器?如果我「做錯了」,我可以手動過濾獲取的結果,但我不確定如何將結果放回到NSFetchedResultsController中,以便我的UITable視圖可以繼續使用NSFetchedResultsController。
看起來像一個很好的解決方案,但** predicateWithBlock **需要iOS 4.0或更高版本。有沒有辦法不使用predicateWithBlock? –
我認爲你必須實現你的自定義方法,它遍歷所有提取的對象,並檢查它們是否有效,如果是的話,將它添加到數組,最後用所有檢查的對象返回數組。但與** predicateWithBlock **相比,此方法非常慢。 –