首页 文章

每个Section的NSFetchedResultsController setLimit

提问于
浏览
0

您如何设置由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中的对象比显示的要多得多,并且更改这些对象的动画会破坏它 .

我如何设置每个部分更有效的限制?我只想要每个部分的第一个结果 .

1 回答

  • 1

    总的来说,我认为你的方法是可行的 .

    只需修复表更新例程即可 . 在插入行之前,检查逻辑是否应该完成,如果没有,请跳过插入 .

相关问题