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 中的对象比显示的对象多得多,并且更改这些对象的动画会破坏它。

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

4

1 回答 1

1

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

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

于 2012-06-02T15:12:24.497 回答