Что происходит с данными в приложении iOS при обновлении новой версии приложения и обновлении новой версии iOS

#ios

#iOS

Вопрос:

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

Мое понимание ограничено тем, что происходит с данными, когда пользователь обновляет свою iOS. Являются ли данные в папках, резервные копии которых хранятся в iTunes / iCloud, единственными безопасными местами для хранения данных? Что означает, что данные в /Tmp и / Library/ Caches не будут там, как только пользователь обновит свою iOS?

/ Документы:

  • iOS будет создавать резервные копии данных через iTunes / iCloud? ДА
  • iOS гарантирует восстановление данных после выпуска новой версии приложения? ДА
  • iOS гарантирует восстановление данных после обновления iOS? ДА

/ Библиотека:

  • iOS будет создавать резервные копии данных через iTunes / iCloud? ДА
  • iOS гарантирует восстановление данных после выпуска новой версии приложения? ДА
  • iOS гарантирует восстановление данных после обновления iOS? ДА

/Library /Caches:

  • iOS будет создавать резервные копии данных через iTunes / iCloud? НЕТ
  • iOS гарантирует восстановление данных после выпуска новой версии приложения? ДА
  • iOS гарантирует восстановление данных после обновления iOS? НЕТ

/ Библиотека / Настройки:

  • iOS будет создавать резервные копии данных через iTunes / iCloud? ДА
  • iOS гарантирует восстановление данных после выпуска новой версии приложения? ДА
  • iOS гарантирует восстановление данных после обновления iOS? ДА

/Tmp:

  • iOS будет создавать резервные копии данных через iTunes / iCloud? НЕТ
  • iOS гарантирует восстановление данных после выпуска новой версии приложения? НЕТ
  • iOS гарантирует восстановление данных после обновления iOS? НЕТ

Комментарии:

1. и ваш вопрос о программировании?

2. если бы мне пришлось догадаться, что это «Правильно ли это?»

Ответ №1:

В целом это правильно, однако после iOS5 содержимое библиотеки / кэшей может быть удалено в любое время, если ОС решит, что ей не хватает места на диске, поэтому хранить что-либо там в долгосрочной перспективе — плохая идея.

Если вы хотите постоянно хранить данные кэша на устройстве, но не создавать их резервную копию в iCloud, существует новое свойство с именем NSURLIsExcludedFromBackupKey, которое можно установить для файла или папки, расположенных в любом месте библиотеки или документов, что предотвратит их резервное копирование в iCloud.

Я написал простую библиотеку, которая управляет ключом NSURLIsExcludedFromBackupKey для вас и предоставляет константы для всех этих папок с более значимыми именами, чтобы было легче запомнить, какие из них использовать для какой цели:

https://github.com/nicklockwood/StandardPaths

Комментарии:

1. При обновлении приложения с комментариями все абсолютные пути изменяются, поскольку приложение перемещается в другую папку.

2. Да, это правда. Вы не должны сохранять эти пути в файле или в NSUserDefaults, вы всегда должны снова вызывать метод для повторного создания пути, если вам нужно получить доступ к ранее сохраненному файлу.