我从Core Data获取一系列事件。反过来,我想过滤结果以获取当前发生的任何事件,即在最后一小时内开始的事件。
我对如何过滤数组有点模糊,甚至更模糊如何在NSpredicate中使用日期。我想我需要计算一个比现在还要早一个小时的时间,一个距离真实时间很短的时间,然后将这些时间与起始时间进行比较,但我不知道该怎么做。
这是我到目前为止所做的:
//fetch from coredata
NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest
error:&error];
NSMutableArray *mutableresults = [results mutableCopy];
NSDate* now = [NSDate date];
NSTimeInterval backSecondsInHour = -60 * 60;
NSTimeInterval forwardSecondsInHour = 60 * 60;
NSDate* hourAgo = [NSDate dateWithTimeInterval:backSecondsInHour sinceDate:now];
NSDate* hourFromNow = [NSDate dateWithTimeInterval:forwardSecondsInHour sinceDate:now];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"starttime >= %@&&starttime<=%@",hourAgo,hourFromNow];
NSArray *filteredEvents=[mutableresults filteredArrayUsingPredicate:predicate];
我在这里走在正确的轨道上吗?非常感谢任何建议。
答案 0 :(得分:0)
相反,每次从数据库中检索所有事件只需获取所需的事件......
以下是自上一小时以来所有事件的谓词应用于fetchRequest的示例:
NSDate *hourAgo = [[Date date] dateByAddingTimeInterval:-3600];
NSFetchRequest *fetchRequest = .....
request.predicate = [NSPredicate predicateWithFormat:"starttime >= %@", hourAgo];