0

Как бы вы могли установить ограничение для каждого раздела в режиме просмотра таблицы, контролируемого NSFetchedResultsController? Например: у меня есть множество шоу, в которых каждый из них имеет даты начала и игры на разных этапах. Я хочу показать только, кто следующий на каждом этапе. Поэтому мне не нужно ограничивать весь запрос, но предел для каждого раздела.NSFetchedResultsController setLimit для каждого раздела

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 делегата, но часто выходит из строя, когда выборки изменений и пробует обновить таблицу. Я думаю, это потому, что в NSFetchedResultsController гораздо больше объектов, чем показано, и анимация изменения этих разрывов.

Как я могу установить более эффективный лимит на каждый раздел? Мне нужен только первый результат для каждого раздела.

+0

2012-06-01 10: 25: 40.120 Событие Cast [4298: 707] *** Ошибка утверждения в - [UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/UIKit-1914.85/UITableView.m:878 2012- 06-01 10: 25: 40.125 Событие Cast [4298: 707] CoreData: ошибка: серьезная ошибка приложения. Исключение было обнаружено у делегата NSFetchedResultsController во время вызова -controllerDidChangeContent :. попытайтесь вставить строку 1 в раздел 0, но есть только 1 строка в разделе 0 после обновления с userInfo (null) –

ответ

1

В целом, я думаю, что ваш подход возможен.

Просто исправьте процедуры обновления таблиц. Прежде чем вставлять строку, проверьте свою логику, если это нужно сделать, а если нет, пропустите вставку.