Сохраняются ли NSUserDefaults при обновлении приложения в Appstore? - PullRequest
100 голосов
/ 28 октября 2009

Это так? Сбрасываются ли NSUserDefaults при отправке обновления в приложение в App Store, или они сбрасываются?

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

Ура, Ник.

Ответы [ 5 ]

111 голосов
/ 28 октября 2009

Они обычно не сбрасываются, если пользователь не удаляет приложение. Для базовых данных NSUserDefaults - лучший способ сохранить данные, такие как предпочтения, даты, строки и т. Д. Если вы хотите сохранить изображения и файлы, лучше подойдет файловая система.

7 голосов
/ 15 ноября 2009

Я верю, что ответ ДА, он будет сохраняться. Это также полностью задокументировано в главе «Каталог приложений» в Руководстве по программированию Apple iPhone OS.

4 голосов
/ 10 июля 2012
  1. Прямой ответ на заданный вопрос: ДА.
  2. Ваша проблема: Ваше приложение зависает из-за проблем с логикой. Предположим, вы сохраняете объект по умолчанию, и приложение проверяет его значение при запуске (или в другом месте). В своем обновлении вы можете изменить способ его проверки или использования, например, вы ожидаете значение, но объект равен нулю или наоборот. Это может вызвать SIGABRT или EXC_BAD_ACCESS.
2 голосов
/ 23 июля 2012

Если у вас была модель CoreData, и вы изменили что-то в своей модели и обновлении, не управляя миграцией, это, вероятно, причина, по которой ваше приложение падает при обновлении ...

1 голос
/ 27 марта 2013

У меня похожий опыт. Наше приложение хранит номер версии в Settings.Bundle / Root.Plist. Это отображается в приложении «Настройки iPhone». Мы обнаруживаем, что при установке номер версии загружается из пакета приложения - поэтому номер версии правильный. Однако при обновлении номер версии не меняется. Это создает впечатление, что пользователь запускает предыдущую версию приложения. У нас нет никакой логики, связанной с номером версии, она только для отображения (она может использоваться персоналом контакт-центра при диагностике неисправностей).

Наш опыт показывает, что NSUserDefaults не очищается, когда пользователь обновляет наше приложение, но экран настроек также не обновляется.

...