Хранение UIImage в Core Data с новым флагом внешнего хранилища - PullRequest
22 голосов
/ 28 октября 2011

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

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

1 Ответ

35 голосов
/ 28 октября 2011

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

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

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

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

Так что следующий совет по-прежнему действителен: CoreData: сохранять изображения в БД или нет?

  • <100 КБ, хранить в той же таблице, что и соответствующие данные </li>
  • <1 Мб хранилище в отдельной таблице, прикрепленной через отношения, чтобы избежать ненужной загрузки </li>
  • 1 Мб хранилища на диске и ссылки на него внутри Core Data

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...