Довольно новый для iPhone dev. Мое приложение использует Core Data, и в какой-то момент я пытаюсь сохранить некоторые данные во время метода NSFetchedResultsControllerDelegate:
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath {
Я получил большую часть этого прямо из документации Apple по этому вопросу. Действие удаления выглядит так:
case NSFetchedResultsChangeDelete:
[managedObjectContext deleteObject:anObject];
NSError *error;
if (![managedObjectContext save:&error]) {
NSLog(@"WTF? %@", [error description]);
}
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
break;
Теперь, когда я сделаю это, рассматриваемый объект будет удален после неизбежного сбоя. Так что что-то правильное происходит. Авария интересная, хотя:
Серьезная ошибка приложения. Исключительная ситуация при обработке изменений базовых данных: не удалось обработать ожидающие изменения перед сохранением. Контекст все еще грязный после 100 попыток. Обычно это рекурсивное загрязнение вызвано неправильным методом проверки, -willSave или обработчиком уведомлений. with userInfo (null)
2010-02-09 23: 02: 03.931 app2 [26664: 207] *** Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Не удалось обработать ожидающие изменения перед сохранением. Контекст все еще грязный после 100 попыток. Обычно это рекурсивное загрязнение вызвано неправильным методом проверки, -willSave или обработчиком уведомлений. '
Мое исследование показало очень ограниченные результаты - хорошо, что я здесь, чтобы документировать это, а? :-) Но моя интуиция говорит, что MOC записывается в другом месте моего контроллера, хотя я не могу найти никаких доказательств этого. У метода viewDidLoad есть NSFetchedResultsController, используемый для получения начальных данных, но это все.
Есть предложения, что здесь может быть не так? Как обычно, ваш улей в сообществе очень ценится!
Приветствия, Аарон