我有一个带有日期字段的实体,我想选择给定年份的记录。如何为这份工作建立一个NSPredicate?在Core Data
中没有找到关于日期函数(如果有)的任何信息谢谢
答案 0 :(得分:5)
最终我按照Wienke的建议做了或多或少。要创建获取特定年份记录的谓词,我确实喜欢这样:
- (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]]; }
答案 1 :(得分:1)
一种可能的方法:
步骤1)请参阅Apple的“日期和时间编程指南”中的“从组件创建日期”。制作代表年初的NSDate,以及代表年末的NSDate。
步骤2)然后,您可以构建一个谓词,搜索日期为第一个日期且小于上一个日期的对象。
谓词看起来像这样:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@“(inceptionDate > %@) AND (inceptionDate < %@)”, dateBeginYear, dateEndYear];