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

Хранение UIImage в базовых данных с новым флагом внешнего хранилища

Я знаю, что хранение UIImage в основных данных обсуждалось много, например здесь, но это было pre-ios5. Теперь, когда у нас есть флаг внешней памяти, вы, ребята, думаете, что было бы хорошей идеей хранить UIImage непосредственно в сущности, как отдельный объект или все еще на диске?

Здесь - источник, объясняющий параметр внешнего хранилища.

4b9b3361

Ответ 1

Примечания к выпуску основных данных для iOS 5.0

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

И из вашей ссылки Внешние двоичные данные эвристика кажется

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

Итак, следующий совет остается в силе: CoreData: хранить изображения в БД или нет?

  • < 100kb хранить в той же таблице, что и соответствующие данные
  • < 1mb хранить в отдельной таблице, прикрепленной через связь, чтобы избежать ненужной загрузки.
  • 1mb хранить на диске и ссылаться на него внутри Core Data​​p >

Флаг устанавливает Core Data, чтобы следовать этому совету и автоматически сохраняет изображения > 1MB как отдельный файл на диске.