Хранение изображений в файловой системе и Core Data - PullRequest
6 голосов
/ 13 марта 2011

В настоящее время я работаю над приложением для iOS, которое позволяет пользователю добавлять изображения из своей библиотеки фотографий в приложение. Я храню эти изображения в файловой системе устройств и получаю к ним доступ, когда они мне нужны (когда они находятся в UIScrollView, я могу обращаться к ним довольно часто)

Я просто хотел получить некоторые мнения об этом подходе. Стоит ли использовать метод файловой системы или было бы полезно вместо этого хранить эти изображения в CoreData.

Буду признателен за любые предложения по этому вопросу.

Спасибо.

Ответы [ 3 ]

5 голосов
/ 14 марта 2011

Я не думаю, что Core Data действительно была разработана для хранения данных такого типа.Это было бы моральным эквивалентом хранения данных изображений в SQL / реляционной базе данных, что тоже не идеально.

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

Несмотря на то, что я не показываю изображения в UIScrollView, я все же думаю, что у вас не возникнет проблем с получением массива информации об изображениях из ядра.Хранение данных и генерация полного пути к файлу на лету, поскольку генерируются ячейки, так как это всего лишь строки и код для генерации UIImage очень компактен.Это или генерирует тот же массив информации, а затем компилирует массив путей к изображениям до того, как генерируются какие-либо ячейки, например, когда UIScrollView вот-вот появится.

3 голосов
/ 15 марта 2011

Вы должны использовать метод файловой системы для чего-либо большего, чем миниатюра.

С одной стороны, если вы храните в Базовых данных, вы должны хранить их, имеющие либо данные, либо преобразуемый атрибут.В любом случае у вас есть дополнительный шаг для преобразования в изображение.Если вы сохраняете файл, вы можете просто использовать UIImage для его прямой загрузки.

Основная проблема, однако, заключается в использовании памяти, поврежденное изображение не будет удалено из памяти, как это делает UIImage.

Обновление 2012-9-20: Этот ответ устарел.Core Data no имеет собственную систему хранения больших массивов данных, таких как изображения, во внешних файлах.

0 голосов
/ 14 марта 2011

Я думаю, что ввод их в основные данные будет медленным.Файловая система будет намного быстрее.

...