Восстановление после ошибки Core Data в saveContext - PullRequest
6 голосов
/ 16 сентября 2011

В приложениях iOS, которые поддерживают Core Data, сгенерированный код для делегата приложения содержит функцию saveContext с комментариями, рекомендующими заменить abort() кодом для восстановления после ошибки.

Есть ли какой-то стандартшаблонный (то есть не специфичный для приложения) код, который может на самом деле восстановиться после такого рода ошибок?

Я думал о том, чтобы стереть все данные из Core Data.Это поможет?Будет ли она защищать от каких-либо ошибок?

Наконец, как мне проверить этот код восстановления?

1 Ответ

2 голосов
/ 16 сентября 2011

Стандартного кода как такового не существует, но, как правило, в руководствах предлагается сообщать пользователю об ошибке (скорее всего, с UIAlertView). Обычно сохранение контекста завершается неудачно, когда есть недопустимые объекты (с неустановленными необязательными атрибутами), а также один объект, имеющий две версии (это происходит, когда объект создается в одном контексте и «обновляется» в другом). В первом случае просят показать ошибки проверки и дать пользователю возможность исправить их на том же экране, где было выполнено сохранение. В последнем случае используются методы слияния фона, описанные в кулинарной книге CoreData (в которой используется либо удаление одной из версий объекта, либо изменение слияния).

Также из моего опыта я бы сказал, что сохранение контекста в AppDelegate не так уж и нужно. Я предлагаю создать отдельный контекст для создания объекта и оставить делегат приложения только для передачи начального MOC rootViewController вашего окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...