Хранение файлов iOS: решение для резервного копирования - PullRequest
2 голосов
/ 23 марта 2012

Как и многие разработчики, мое приложение для iOS было отклонено из-за наличия загружаемого контента, который был скопирован в iCloud. Я искал четкий ответ на этот вопрос, но не смог его найти.

Apple говорит, что вы должны внедрить атрибут «не выполнять резервное копирование» в свои файлы, однако они также указывают (https://developer.apple.com/library/ios/#qa/qa1719/_index.html):

Новый атрибут «не выполнять резервное копирование» будет использоваться только в iOS 5.0.1 или более поздней версии. На iOS 5.0 и более ранних версиях приложения должны будут хранить свои данные в / Library / Caches, чтобы избежать их резервного копирования. Поскольку этот атрибут игнорируется в старых системах, вам необходимо убедиться, что ваше приложение соответствует рекомендациям по хранению данных iOS во всех версиях iOS, которые поддерживает ваше приложение.

Мое приложение поддерживает iOS 4.0 и более поздние версии. Означает ли это, что если я хочу сохранить поддержку iOS 4.0-5.0, у меня нет выбора, кроме как поместить весь мой контент в папку Caches? Или я могу просто добавить атрибут «не делать резервную копию» и сохранить файлы в / Documents? Если мне нужно сохранить содержимое в папке «Кэши», могу ли я предотвратить очистку этих файлов в ситуациях недостаточного хранения? Наконец, есть ли разработчики, которые поместили файлы в папку Caches и знают, как часто они удаляются?

Любой совет или помощь будет принята с благодарностью. Большое спасибо!

Ответы [ 3 ]

1 голос
/ 11 апреля 2012

Проблемной областью является iOS 5.0, которая поддерживает iCloud, но не распознает атрибут «не резервировать». В этом случае все данные приложения в каталоге документов могут быть сохранены в iCloud. Для версий iOS ниже 5.x:

  • Недопустимая резервная копия iCloud.
  • флаг "не выполнять резервное копирование" не является подходящим. Он не будет выдавать никаких предупреждений во время компиляции.

Следовательно, данные могут храниться в каталоге документов, с флажком «не выполнять резервное копирование», соответствующим образом добавленным к содержимому (файлам / папкам), для всех версий. Проблема только для версии 5.0.

0 голосов
/ 23 марта 2012

Нет, это неправильно, что ты говоришь. Я решил твою проблему таким же образом. Я сохранил свою базу данных и изображения каталогов в каталоге Documents / .., помечая их как Не делать резервных копий, как рекомендует Apple. Таким образом, для устройств, которые обновлены до версии 5.x или более, файлы не резервируются в iCloud; для других нет изменений, потому что нет поддержки iCloud.

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

0 голосов
/ 23 марта 2012

Я думаю, вы можете найти похожий вопрос, подобный этому:

Какое подходящее место для создания файла sqlite?

и, по моему мнению, лучше хранитьфайлы в библиотеке с новым каталогом, а не с каталогом документов ..

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