【发布时间】:2013-10-09 13:57:34
【问题描述】:
我有对象Movie,有一对多关系events 每个事件,都有属性date
我需要使用在具体日期发生事件的此类电影创建 fetchedResultController
- (NSFetchedResultsController *)fetchedResultsControllerForEntertainments:(Class)className date:(NSDate *)date
{
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass(className)];
NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"yyyy/MM/dd";
NSDate *startDate = [dateFormatter dateFromString:[dateFormatter stringFromDate:date]];
NSDateComponents *oneDay = [NSDateComponents new];
oneDay.day = 1;
NSDate *endDate = [[NSCalendar currentCalendar] dateByAddingComponents:oneDay toDate:startDate options:0];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(events, $s, ($s.date >= %@ AND $s.date < %@)).@count > 0", startDate, endDate];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"objectId" ascending:YES];
fetchRequest.sortDescriptors = @[sortDescriptor];
fetchRequest.fetchBatchSize = 20;
NSFetchedResultsController *fetchResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
return fetchResultsController;
}
我想创建一个谓词,它将返回我的电影,该电影具有当前日期的事件
【问题讨论】:
-
你的意思是它没有像你想要的那样工作?能说清楚一点吗?
-
发布一段代码进行测试(以及测试数据,因为设置起来很麻烦,你自己来!)
-
您是否验证过
startDate和endDate包含预期值? -
是的,所有日期都正确
-
还有什么问题?没有结果,错误的结果,崩溃......?您必须提供更多信息。
标签: ios objective-c core-data nspredicate