Подтвердить что ты не робот

Сохранение изображений в Core Data или в виде файла?

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

4b9b3361

Ответ 1

Существует два основных варианта:

  • Сохраните файл на диске, а затем сохраните путь к изображению в основных данных
  • Сохранять двоичные данные изображения в основных данных

Я лично предпочитаю первый вариант, так как он позволяет мне выбирать, когда я хочу загрузить фактическое изображение в память. Это также означает, что мне не нужно помнить, в каком формате находятся исходные данные; Я могу просто использовать путь к alloc/init новому объекту UIImage.

Ответ 2

Возможно, вы захотите прочитать this из руководства по программированию основных данных о том, как обращаться с бинарными большими объектами (BLOB). Существуют правила большого размера, для которых размерные двоичные данные должны и не должны храниться в фактическом хранилище основных данных.

Вы также можете посмотреть Основные данные iPad/iPhone BLOBS и файловую систему для PDF файлов 20k

Если вы разместите двоичные данные в хранилище Core Data, вам будет хорошо иметь объект Data, который содержит фактические данные и отдельный объект "Image". Создайте связь между двумя объектами, чтобы "данные" нужно было загружать только когда это действительно необходимо. Объект "Изображение" может содержать метаданные, такие как название, тип данных и т.д.

Ответ 3

Что касается того, где хранить пользовательские данные/файлы (я нашел "поддержку приложений" достойным местом, учитывая, что я был осторожен в отношении перемещения пользователя, удаления или изменения файла каким-либо образом, что привело бы к изображению не может быть восстановлен и использован позже моей заявкой)

Возьмите minecraft в качестве примера: например. "~/Library/Поддержка приложений /minecraft/saves/ "

Я бы согласился с предыдущими комментариями и сохранил пути к изображениям в основных данных, но в остальном сохранил сами изображения в виде файлов png в своей собственной папке за пределами основных данных.