iOS Допустимо ли хранить сотни фотографий в Core Data?

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

Я использую Core Data для сохранения фотографий. Меня беспокоит, что сотни фотографий 640x640 могут сделать размер каталога документов довольно большим (побочный вопрос: я предполагаю, что мое основное хранилище данных сохраняется в каталоге документов приложений. Это правда?).

Это проблема - хранить так много фотографий локально в приложении, или я слишком осторожен? Есть ли ограничение на размер файла для хранения?


person Andrew Davis    schedule 08.04.2014    source источник
comment
Просто интересно, имеет ли смысл хранить само изображение в каталоге документов и сохранять только путь к файлу изображения в coredata.   -  person rckoenes    schedule 08.04.2014
comment
Вообще говоря, у @rckoenes есть лучшее решение. Используйте базу данных (в данном случае CoreData) для хранения данных, по которым будет производиться поиск. Храните большие данные в файлах, на которые указывает база данных.   -  person zaph    schedule 08.04.2014
comment
Извините, я должен был быть более ясным. Я действительно этим занимаюсь. Сохранение фотографии в каталоге документов, а затем сохранение пути к файлу в основных данных.   -  person Andrew Davis    schedule 08.04.2014
comment
@AndrewDav, есть новости по вашему вопросу?   -  person Michal    schedule 15.04.2014


Ответы (2)


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

Дело в том, будут ли ваши пользователи довольны тем, что ваше приложение становится все больше и больше? Можете ли вы дать им возможность хранить изображения на сервере и позволить им устанавливать размер кеша?

ИЛИ - вы можете сохранить его в библиотеке если вы застряли в этом ...

person Michal    schedule 08.04.2014
comment
Спасибо. Хранилище на стороне сервера не вариант. Сотни / тысячи фотографий - это мелочь, поэтому я планирую крайности. Я, скорее всего, установлю ограничение на общее количество фотографий, которые могут быть сохранены. - person Andrew Davis; 15.04.2014
comment
Я только что подумал, могу ли я создать альбом в приложении «Фото» и заполнить его фотографиями (вместо использования каталога документов моего приложения). Тогда мое приложение могло бы вытащить эти фотографии (если возможно заполнить UITableview из определенного фотоальбома)? - person Andrew Davis; 15.04.2014
comment
Конечно, можно - с ALAssetsLibrary. Проблема в том, что данные находятся в руках пользователя - он / она может удалить весь альбом / переименовать его / удалить некоторые изображения из этого альбома, который вы создаете ... так что управление файлами будет вне вашего контроля ... - person Michal; 15.04.2014

Расположение базы данных указывается в методе NSPersistentStoreCoordinator: addPersistentStoreWithType :. Я думаю, что Apple создает это для того, чтобы быть в вашем каталоге документов. Итак, вы правы, предполагая, что это находится в каталоге Documents.

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

Возможно, рассмотрите возможность введения максимальной квоты изображений, с которыми может работать приложение, и загрузки / скачивания изображений с URL-адреса, который вы должны указать в качестве пути. Как насчет использования SD-карты в качестве резервного варианта. Хм много работы Я тебе не завидую. Может быть, кто-то другой сделал нечто подобное, и они могут дать вам начало.

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

Основные данные - хранение изображений (iPhone)

Хранить фото и видео в Core Data?

Обновления приложений, NSURL и каталог документов

CoreData (для iphone) для хранения изображений

Хранение больших файлов (например, изображения / фильма) файлы в Core Data на iPhone

Ограничение размера моего приложения ios, особенно Core Data

Надеюсь, это поможет кое-что.

person Frank Brosnan    schedule 08.04.2014