将核心数据与NSPredicate和NSDate结合使用

时间:2012-11-09 16:32:20

标签: objective-c ios core-data

我有一个Event表,用于保存NSString *actionNSDate *date。我想过滤从核心数据中检索到的数组,以显示在过去一小时和下一小时内执行的所有操作,而不是取决于它保存的日期。周二的例子,一个动作在16:00保存,但今天是星期五17:00,我仍然想要检索星期二保存的动作和该时间范围内的任何动作。

1 个答案:

答案 0 :(得分:0)

对于遇到这个问题的人。更改了我的事件表以保存整数(操作的小时)并像这样检索它

NSDate *currentFullDate = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:currentFullDate];
NSInteger currentHour = [components hour];
NSInteger hourAgo = currentHour -1;
NSInteger nextHour = currentHour +1;


NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Event"];
request.predicate = [NSPredicate predicateWithFormat:@"(hour >=%@) AND (hour <= %@)", hourAgo, nextHour];
request.fetchLimit = 5;
NSError *error;
NSArray *eventArray = [managedObjectContext executeFetchRequest:request error:&error];

for (Event *event in eventArray)
{

}