您将如何设置由 NSFetchedResultsController 控制的 tableview 中每个部分的限制?例如:我有一堆节目,每个节目都有开始日期并在不同的舞台上播放。我希望能够在每个阶段只显示谁是下一个。所以我不需要对整个请求进行限制,而是对每个部分进行限制。
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Event"];
NSMutableArray *predicates = [NSMutableArray array];
[predicates addObject:[NSPredicate predicateWithFormat:@"startDate > %@", [NSDate date]]];
request.predicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];
NSSortDescriptor *stageSort = [[NSSortDescriptor alloc] initWithKey:@"stage.id" ascending:YES];
NSSortDescriptor *dateSort = [[NSSortDescriptor alloc] initWithKey:@"startDate" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:stageSort, dateSort, nil];
[request setSortDescriptors:sortDescriptors];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"stage.id"
cacheName:nil];
如果我将它限制在 tableview 委托方法中,但当 fetch 更改并尝试更新表时经常崩溃,这种工作方式。我认为这是因为 NSFetchedResultsController 中的对象比显示的对象多得多,并且更改这些对象的动画会破坏它。
我将如何为每个部分设置更有效的限制?我只想要每个部分的第一个结果。