私はUITableView
に2 NSFetchedResultsControllers
を使用しています。各NSFetchedResultsController
にはセクションが1つしかありません。ただし、表には4つのセクションがあります。私はNSFetchedResultsControllers
のいずれかの結果をテーブルの第4セクションに設定します。これまではすべてうまく動作します。しかし、ユーザーが最初のセクションの最初のセルを削除すると、NSFetchedResultsControllers
が変更されます。表の最後のセクションの行が削除されることがあります。このメソッドが呼び出されるとき:複数のNSFetchedResultsController - didChangeObject
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath
{
UITableView *tableView = self.tableView;
switch(type) {
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
NSLog(@"section: %d, row: %d", [newIndexPath section], [newIndexPath row]);
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
...
}
セクションは、NSFetchedResultsControllers
のセクションであるため、常に0です。したがって、セクションは、テーブルビューの正しいものと一致しません。
回避策はありますか?私は基本的にNSFetchedResultsController
のセクションを0ではなく3に変更したいと思っています。