使用NSPredicate过滤NSMutableArray

时间:2012-05-10 16:05:31

标签: objective-c cocoa core-data nsdate nspredicate

我从核心数据中获取记录并用它们填充NSMutableArray,现在我想用下面的代码过滤它们但是不能正常工作。我应该这样做吗?

[array filterUsingPredicate:[NSPredicate predicateWithFormat:@"date==%@",date1 ]];
//date = a field with format NSDate in core data
//date1 = NSDate

2 个答案:

答案 0 :(得分:1)

为什么不在NSFetchRequest中使用谓词并仅使用您需要的记录来填充NSArray?

答案 1 :(得分:0)

也许是因为您输入日期和时间以及何时要使用date1过滤数组时date1的时间不等于您存储在核心数据中的日期

查看此代码并输入没有时间的日期

NSDate *dateTime=[NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSDateComponents *components = [[NSDateComponents alloc] init];
components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit
                         fromDate:dateTime];
NSDate *dateOnly = [calendar dateFromComponents:components];