我有一个entity
,其中包含NSDate (format yyyy-MM-dd)
的对象现在我想要fetch request
只包含今天NSDate
的对象。所以我正在做以下事情。
NSDate *now = [NSDate new];
RKManagedObjectStore *store = [[DominoDataModel sharedDataModel] objectStore];
NSManagedObjectContext *context = store.mainQueueManagedObjectContext;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Event"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"eve_date = %@",now];
fetchRequest.predicate = predicate;
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"eve_date" ascending:YES];
fetchRequest.sortDescriptors = @[descriptor];
NSArray *matches = [context executeFetchRequest:fetchRequest error:nil];
arrConcerten = [matches mutableCopy];
NSLog(@"matches %@",matches);
我的NSLog
始终不返回任何匹配项。
有人可以帮我吗?
修改
我的实体包含这样的NSDates:
2013/08/29
2013/08/30
2013/09/02
2013/09/15
2013/09/28
我认为我可以将这些NSDates与今天的日期进行比较?但这可能不起作用,因为我的实体中的NSDates没有时间戳?
答案 0 :(得分:4)
你的日期是一个时间戳,也包含秒等。你需要的是一个“介于”谓词。
NSPredicate *subPredFrom = [NSPredicate predicateWithFormat:@"eve_date >= %@ ", dateFrom];
[subpredicates addObject:subPredTo];
NSPredicate *subPredTo = [NSPredicate predicateWithFormat:@"eve_date < %@", dateTo];
[subpredicates addObject:subPredFrom];
其中dateTo是第二天00:00,dateFrom是请求日00:00;)为了得到这个,你必须使用NSDateComponents
NSDateComponents *components = [calendar components:NSYearCalendarUnit| NSMonthCalendarUnit| NSWeekCalendarUnit| [NSDayCalendarUnit fromDate:now];
NSDate *today = [calendar dateFromComponents:components];
[components setDay:components.day+1]; //
NSDate *tomorrow = [calendar dateFromComponents:components];