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

Сохранение капли во внешнем местоположении с использованием встроенного параметра CoreData

У меня есть объекты, обладающие свойствами изображения. Поскольку сохранение больших блоков в CoreData является плохой идеей, я пытаюсь использовать встроенный параметр CoreData " Сохранить в файле внешней записи", который вы можете увидеть в Data Model Inspector.

Несмотря на включение этой опции, я не вижу, чтобы какие-либо данные изображения хранились извне. Судя по размеру, похоже, что они все еще сохраняются в файле sqlite. В чем проблема?

4b9b3361

Ответ 1

Если ваш тип магазина NSSQLiteStoreType, ваш атрибут NSBinaryDataAttributeType. Вы включили setAllowsExternalBinaryDataStorage, а размер данных объекта больше, чем приблизительно 1 МБ.

  • Объекты, размер которых меньше 1 МБ, хранятся в базе данных sqlite.
  • Объекты, которые больше, являются лишь ссылкой на внешний файл.

Вы найдете (внешние) файлы в скрытом подкаталоге в том же месте, что и постоянное хранилище.

<path>/<database>.sqlite
<path>/<your_database>_SUPPORT/_EXTERNAL_DATA/

Ответ 2

sqlite2 не позволяет размеру данных BLOB быть более 1 МБ. Однако sqlite 3 позволяет увеличить BLOB. Сначала проверьте, какая версия sqlite используется. И если ур файл находится в МБ, я предпочел бы вместо этого хранить их в локальной базе данных.