我有一个由NSFetchedResultsController控制的UITableView。 行由行的属性组织成部分。但是当我修改该属性时,应用程序终止于:
Invalid update: invalid number of sections.
每一行代表一部电影,广角镜头,特写镜头等。 该行还包含它所属的场景,并根据该行计算部分。
#pragma mark Transient properties
- (NSString *)sectionIdentifier
{
return [self sceneNumber];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> theSection = [[self.fetchedResultsController sections] objectAtIndex:section];
return [theSection name];
}
我不知道我应该在这做什么。我玩过UITableView insertSections和deleteSections,但我总是得到相同的无效段数错误。
它会自动移动到其他现有部分:
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo
atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type {
switch(type) {
case NSFetchedResultsChangeInsert:
[self.tableView insertSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeUpdate:
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
在我添加
之后,它工作了case NSFetchedResultsChangeUpdate:
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
但现在,说我有两个牢房。 Cell1.sceneNumber = 1 Cell2.sceneNumber = 2
如果我设置Cell1.sceneNumber = 3,我收到错误:
Invalid update: invalid number of sections. The number of sections contained in the table view after the update (3) must be equal to the number of sections contained in the table view before the update (2)
答案 0 :(得分:3)
我们需要看到更多代码才能知道问题所在。但是,可能有用的一件事是查看去年WWDC的“掌握表视图”视频。他们详细介绍了如何添加/删除部分/行以及您应该在模型/表中进行更改的顺序(使用清晰的图表)。
转到https://developer.apple.com/videos/wwdc/2010/并在登录后转到应用程序框架&gt;第128节 - 掌握表格视图。