Можно ли загружать изображения / файлы в мой пакет приложений?

У меня есть приложение, которое позволяет мне загружать символы (изображения), звуки и т. Д. Когда пользователь выбирает, какой символ для загрузки можно сохранить в каталоге в моем приложении Bundle? Если нет, где лучше всего хранить мой контент (данные)? Я думал о каталоге документов, но потом я увидел, что Apple теперь хочет данные, хранящиеся в каталоге кэшей.

Спасибо за помощь.

могу ли я сохранить это в каталоге в моем приложении Bundle?

Нет, вы не можете изменить набор приложений.

Если нет, где лучше всего хранить мой контент (данные)?

  • Если ваше приложение должно поддерживать iOS 5.0 или более раннюю версию, вам нужно будет сохранить данные своего приложения в каталоге Caches . Однако имейте в виду, что файлы могут быть удалены в ситуациях с низким пространством, поэтому ваше приложение будет необходимо грамотно деградировать, если данные вашего приложения будут удалены.

  • Начиная с iOS 5.0.1 вы можете хранить файлы данных в каталоге документов и помечать их как «не создавать резервные копии» . Помечая файлы, ваше приложение соответствует руководству, согласно которому приложения несут ответственность за то, что только данные пользователя, а не данные приложения подкреплены iCloud и iTunes и избегают возможного отклонения Apple. В этом случае файлы не будут удалены в ситуациях с низким пространством.

  • Начиная с iOS 5.1 вы можете хранить свои файлы данных в каталоге документов и использовать NSURLIsExcludedFromBackupKey или kCFURLIsExcludedFromBackupKey для исключения файлов из резервных копий. Любой из этих API-интерфейсов предпочтительнее отмечать их как «не создавать резервные копии». В этом случае ваше приложение соответствует рекомендациям в App Store, и файлы не будут удалены в ситуациях с низким пространством.

Я знаю, что это довольно продолжительная дискуссия, но вы, вероятно, должны ее прочитать. 🙂

В Руководстве по хранению данных iOS указано :

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

  1. Только документы и другие данные, созданные пользователем или которые в противном случае не могут быть восстановлены вашим приложением, должны храниться в каталоге / Documents и будут автоматически поддерживаться iCloud.

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

  3. Данные, которые используются только временно, должны храниться в каталоге / tmp. Хотя эти файлы не поддерживаются в iCloud, не забудьте удалить эти файлы, когда вы закончите с ними, чтобы они не продолжали потреблять пространство на устройстве пользователя.


Если у вас есть OS X или фон Unix, легко понять позицию Apple, что такие каталоги не имеют гарантии того, как долго данные в них будут сохраняться.

Тот факт, что каталог tmp в песочнице приложения не совпадает с каталогом root / tmp , не должен иметь значения, как вы думаете об этом каталоге.

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


Изменения / пробелы в документации Apple:

Уже 29 июня 2011 года документация Apple относительно / Documents заявила:

Используйте этот каталог для хранения пользовательских документов и файлов данных приложений.

Это довольно ясно. Неудивительно, что разработчики недовольны тем, что правила для каталога Documents изменились в iOS 5 без какой-либо подходящей альтернативы.

Что касается / Библиотека / Кэши:

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


Отклонения в просмотре приложений

Разработчики сообщают, что приложения, которые хранят какие-либо / некоторые / много данных в каталоге «Документы», отклоняются App Review.

Маловероятно, что команда App Review имеет подробное знание того, какие файлы хранятся в какой директории и какие из них создаются пользователем, и данные, которые могут быть загружены повторно или регенерированы. Некоторые разработчики сообщили об успехе в реагировании на команду App Review с объяснением того, как их приложение хранит данные и как это соответствует правилам.

Что поддерживается iTunes и iCloud

Все в домашнем каталоге приложения резервное копирование, за исключением:

  • Сам пакет приложений (.app)
  • / tmp
  • / Библиотека / Каталог кэшей

В другой документации четко указано, что каталог поддержки приложений также поддерживается iTunes (и предположительно iCloud). В обсуждениях некоторые разработчики предположили, что каталог поддержки приложений будет более безопасным (= более постоянным), альтернативным для Cache. Для меня кажется, что App Review будет бороться с большими объемами данных, хранящихся в поддержке приложений, с тем же рвением, что и в каталоге Documents, поскольку это все касается хранилища iCloud.

Изменения в поведении в iOS 5

Начиная с iOS 5, / Library / Caches можно очистить, пока ваше приложение не работает, если устройство испытывает предупреждение о нехватке места на диске.

Больше нет каталога, в котором ваше приложение может хранить файлы, которые:

  • Не поддерживается в iTunes / iCloud
  • Не подвергаться риску быть очищенным

Загруженный контент не должен храниться в папке «Документы» в соответствии с Руководством Apple:

 Only documents and other data that is user-generated, or that cannot otherwise be recreated by your application, should be stored in the <Application_Home>/Documents 

Вместо этого используйте каталог / Library / Caches

 Data that is used only temporarily should be stored in the <Application_Home>/tmp directory. 
  • Использование Facebook iOS SDK для извлечения дней рождений
  • Быстрая общая ошибка функции?
  • LLDB: не может быть выражение IRGen
  • Как рассчитать ошибку Cross-Track (местоположение GPS / Core)
  • Конфликт OpenCv - iOS MapKit
  • Есть ли быстрый способ перейти от представления в Interface Builder к свойству IBOutlet в коде?
  • Проблема компилятора Swift: компилятор не компилирует длинный массив параметров для запроса Alamofire post
  • Делегат приложения должен реализовать свойство window, если он хочет использовать основной файл раскадровки swift
  • Xcode: Постоянная ошибка сегментации: 11 при использовании Firebase
  • iOS - Воспроизведение mp3 до 4.0
  • Разработка iOS. Как я могу устранить личные профили профилей сотрудников и клиентов?
  • Interesting Posts

    Как вычислить высоту строки таблицы TableView и передать значение heightForRowAtIndexPath

    Невозможно преобразовать дату из строки после XMLparser

    IPads и автоматическое изменение размера / масштабирование веб-сайтов

    Можно ли загрузить приложение iOS с одним экраном веб-страницы в App Store (** Примечание: мое приложение содержит только один экран **)

    Эффективный алгоритм взвешенной случайной выборки с заменой

    Как показать / скрыть UISearchBar действием в Swift?

    Framework не найден GTMOAuth2

    изменение пользовательского шрифта для UILabel с использованием пользовательских шрифтов (программно) в swift

    Анимация с автозапуском

    Пользовательский прототип Cell с Parse – Swift

    Сравнить NSString с китайскими буквами ios

    Время отправки навсегда в Swift 3

    Возможно ли запустить Xcode 6 beta 6 с флеш-накопителя?

    Набор спрайтов: заикание при движении с постоянной скоростью

    UITableView setEditing не показывает кнопку удаления

    Давайте будем гением компьютера.