Как я должен защищаться код для возможных повреждений файла данных ядра или проблемы с загрузкой? - PullRequest
9 голосов
/ 24 апреля 2011

Я использую Core Data в своем приложении для iPhone, и это нормально.

Я обеспокоен тем, какой подход я должен использовать, если когда-нибудь произойдет ошибка при загрузке основных данных в мое приложение (или сохранении в этом отношении). В частности, возможная ситуация (не знаю, каковы шансы на это, но лучше быть в безопасности, чем сожалеть), когда ваше приложение вообще не может функционировать, потому что оно не может загрузить свои данные, а перезапуск приложения возвращает его к то же самое пожалуйста.

Вопрос - что обычно делают люди, пытаясь справиться с этой ситуацией? Какой подход другими словами? Единственные, которые приходят на ум до сих пор:

  1. Встроенный обработчик ошибок, который запрашивает у пользователя, хотят ли они удалить свои данные и, так сказать, начать заново ... Я предполагаю, что это предполагает, что iPhone правильно сообщит о проблеме программе как ошибка

  2. Предложите пользователю, возможно, придется удалить приложение и переустановить (меньше работы)

  3. Другое? Не уверен, есть ли какие-либо «очистить» или «исправить» код / ​​советы, которые возможны, или нужно ли вообще подумать о том, чтобы попробовать это в любом случае ....

спасибо

PS. Я не дошел до понимания / работы с миграциями основных данных для обновлений приложения, где схема основных данных изменилась. Возможно, это просто еще одна возможная ситуация, в которой вышеуказанные вопросы все еще актуальны ... Или не уверены, будет ли подход, который используется в коде (и с сообщениями пользователей), зависеть от того, является ли это ошибкой миграции или отдельной ошибкой.

1 Ответ

2 голосов
/ 24 апреля 2011

Лучше быть в безопасности, чем потом сожалеть, но не тратьте на это много времени. Повреждение основных данных крайне редко. Даже многократное падение во время сохранения редко вызывает проблемы.

В любом случае единственный способ справиться с поврежденным хранилищем - это удалить его. Возможно, вы захотите установить какой-нибудь флаг для удаления файла, когда приложение закрывается. После обнаружения поврежденного файла дайте пользователю возможность удалить хранилище и перезапустить приложение.

...