2012-03-06 2 views
3

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

Связанный вопрос: Как я могу преднамеренно повредить NSUserDefaults, чтобы проверить эту ситуацию?

+2

. Лучший вопрос: почему дефолты становятся развращенными в первую очередь? Маловероятно, что это NSUserDefaults делает это. Посмотрите внимательно на все места, где написаны дефолты, и посмотрите, что именно вы пишете. – trudyscousin

+1

Когда вы говорите, что это испорчено, вы имеете в виду, что у него есть значения мусора? И если да, проверьте, может ли код обрабатывать неожиданные значения, а затем восстанавливать значение по умолчанию. – vipinagg

+0

Это оба отличные моменты. Я (к сожалению) не уверен в конкретных обстоятельствах сбоев и не испытывал их при тестировании, но, тем не менее, я уверен, что могу использовать больше гарантий при чтении значений по умолчанию. Может быть, это нечеткий вопрос без особых подробностей. – shawkinaw

ответ

0

Постараюсь повезло догадку:

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

И, чтобы «испортить», я бы попытался сохранить NSArray вместо NSNumber. Затем перезапустите приложение.

Надеюсь, это поможет

+1

Как было сказано выше в комментариях, я просто добавил еще несколько кодов для всех своих NSUserDefaults, убедившись, что значения имеют смысл. Проделав довольно много тестов, я никогда не смог заставить NSUserDefaults потерпеть крах, так что это должно быть то, что я делаю со значениями, вызывающими проблему. – shawkinaw

Смежные вопросы