NSPredicate仅在date字段的“年份”部分进行过滤

我有一个date字段的实体,我想select一个给定年份的logging。 如何build立一个NSP的工作呢? 核心数据中没有find关于date函数(如果有的话)的任何信息

谢谢

一种可能的方法:

步骤1)请参阅Apple的“date和时间编程指南”中的“从组件创builddate”。 使NSDate代表年份的开始,NSDate代表年份的结尾。

步骤2)然后,您可以构build一个谓词,用于searchdateattrs大于第一个date但小于最后一个date的对象。

谓词看起来像这样:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@“(inceptionDate > %@) AND (inceptionDate < %@)”, dateBeginYear, dateEndYear]; 

最终,我根据维克的build议做了更多或更less的事情。 要创build提取特定年份的logging的谓词,我的确如此:

 - (NSPredicate*) predicateFromYear:(NSInteger)start span:(NSInteger)aSpan { NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *dc = [NSDateComponents new]; [dc setYear:start]; NSDate *startDate,*endDate; startDate = [cal dateFromComponents:dc]; [dc setYear:aSpan]; endDate = [cal dateByAddingComponents:dc toDate:startDate options:0]; [dc release]; return [NSPredicate predicateWithFormat: @"date >= CAST(%f, \"NSDate\") AND date < CAST(%f, \"NSDate\")", [startDate timeIntervalSinceReferenceDate], [endDate timeIntervalSinceReferenceDate]]; }