Если я нажимаю на ячейку и фона, то возникает обновление Core Data, моя ячейка становится недоступной.Как сохранить ячейку, выбранную при вызове NSFetchedResultsChangeMove с 2 идентичными NSIndexPath?
После расследования, реализация моих NSFetchedResultsControllerDelegate
«х controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
вызывается с типом NSFetchedResultsChangeMove
но indexPath
и newIndexPath
являются идентичным (то есть один и тем же значением строк/раздела).
Тип NSFetchedResultsChangeUpdate
не вызывается.
Моя реализация controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
является типичной, предусмотренной в документации Apple. Я считаю, что переход от:
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath {
...
switch(type) {
...
case NSFetchedResultsChangeMove:
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
к:
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath {
...
switch(type) {
...
case NSFetchedResultsChangeMove:
if (indexPath.section != newIndexPath.section || indexPath.row != newIndexPath.row) {
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
}
break;
}
}
бы решить мою проблему.
Мой вопрос: исправлено ли это или я пропустил что-то, что могло бы объяснить, почему мое обновление относится к типу NSFetchedResultsChangeMove
?