2012-06-01 39 views
0

你将如何去设置由NSFetchedResultsController控制的tableview中每个部分的限制?例如:我有一堆节目,每个节目都有开始日期并在不同的阶段播放。我希望能够在每个舞台上只显示下一个谁。所以我不需要对整个请求进行限制,而是对每个部分进行限制。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事件强制[4298:707] ***声明失败 - [UITableView _endCellAnimationsWithContext:],/SourceCache/UIKit/UIKit-1914.85/UITableView.m:878 2012- 06-01 10:25:40.125事件强制转换[4298:707] CoreData:错误:严重的应用程序错误。在调用-controllerDidChangeContent:期间,NSFetchedResultsController的委托捕获到异常。尝试将第1行插入第0部分,但使用userInfo(null)更新后,第0部分中只有1行 –

回答

1

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

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

相关问题