【发布时间】:2011-01-12 12:16:02
【问题描述】:
我有一个包含 3 个部分的 UITableView,每个部分都通过唯一的 NSFetchedResultsController 提供。
在插入、更新...表时,我从 NSFetchedResultsController -controllerDidChangeContent 收到 Assertion failure。
我的猜测是 indexPaths 出现在下面的方法中,因为每个控制器只有一个部分 (0),而对于第 0 部分中的控制器,故障不会发生。
- (void)controller:(NSFetchedResultsController*)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath*)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath*)newIndexPath
{
switch(type)
{
case NSFetchedResultsChangeInsert:
[[self atableView] insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationLeft];
break;
case NSFetchedResultsChangeDelete:
[[self atableView] deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
break;
case NSFetchedResultsChangeUpdate:
[self configureCell:(DashboardViewCell *) [[self atableView] cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
break;
case NSFetchedResultsChangeMove:
[[self atableView] deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[[self atableView] insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
所以我的问题是,如何确定正在处理哪个控制器(来自哪个部分)并相应地修改 indexPath 以及这样做是否正确?可能还有使用多个 nsfetchedresultscontroller 和一个 uitableview 的任何示例。
【问题讨论】:
标签: xcode uitableview ios nsfetchedresultscontroller