У меня есть набор данных, которые также содержат изображения. Я хочу кэшировать эти данные. Должен ли я хранить их в файловой системе или по основным данным и почему?
Сохранение изображений в Core Data или в виде файла?
Ответ 1
Существует два основных варианта:
- Сохраните файл на диске, а затем сохраните путь к изображению в основных данных
- Сохранять двоичные данные изображения в основных данных
Я лично предпочитаю первый вариант, так как он позволяет мне выбирать, когда я хочу загрузить фактическое изображение в память. Это также означает, что мне не нужно помнить, в каком формате находятся исходные данные; Я могу просто использовать путь к alloc
/init
новому объекту UIImage
.
Ответ 2
Возможно, вы захотите прочитать this из руководства по программированию основных данных о том, как обращаться с бинарными большими объектами (BLOB). Существуют правила большого размера, для которых размерные двоичные данные должны и не должны храниться в фактическом хранилище основных данных.
Вы также можете посмотреть Основные данные iPad/iPhone BLOBS и файловую систему для PDF файлов 20k
Если вы разместите двоичные данные в хранилище Core Data, вам будет хорошо иметь объект Data, который содержит фактические данные и отдельный объект "Image". Создайте связь между двумя объектами, чтобы "данные" нужно было загружать только когда это действительно необходимо. Объект "Изображение" может содержать метаданные, такие как название, тип данных и т.д.
Ответ 3
Что касается того, где хранить пользовательские данные/файлы (я нашел "поддержку приложений" достойным местом, учитывая, что я был осторожен в отношении перемещения пользователя, удаления или изменения файла каким-либо образом, что привело бы к изображению не может быть восстановлен и использован позже моей заявкой)
Возьмите minecraft в качестве примера: например. "~/Library/Поддержка приложений /minecraft/saves/ "
Я бы согласился с предыдущими комментариями и сохранил пути к изображениям в основных данных, но в остальном сохранил сами изображения в виде файлов png в своей собственной папке за пределами основных данных.