2010-07-06 5 views
0

Привет В настоящее время я пытаюсь создать приложение для чтения для iphone, немного похожее на приложение NYTimes iphone или журнал Time или приложение iphone для США сегодня. В основном я буду разбирать фид, содержащий статьи, сохраняя данные локально в базе данных и отображая материал и все такое.Приложение Iphone: Управление загруженными изображениями

Теперь я только начинаю с разработки приложений для Iphone, я просто хотел бы узнать, как наилучшим образом управлять изображениями в таких приложениях. Id нравится сохранять изображения для каждой статьи локально. Какой предпочтительный метод для этого, сохраните его в базе данных или сохраните в файловой системе. Есть много изображений, и управление ими было бы проще, если бы я сохранил его в блоке blob в базе данных, но это повлияло бы на производительность, как я полагаю. Сохранение его в файловой системе в каталоге документов приложений даст мне лучшую производительность, но мне интересно, как мне управлять большим количеством файлов (сохранение его, отслеживание изображения конкретной статьи, удаление файлов и т. Д.).

ответ

2

Из Core Data Programming Guide:

Это лучше, однако, если вы в состоянии хранить двоичные объекты в качестве ресурсов в файловой системе, а также для поддержания связи (например, URL-адреса или пути) к этим ресурсам. Затем вы можете загрузить BLOB и при необходимости.

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

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

Что касается второй части вашего вопроса о том, как убедиться, что файлы удаляются, когда управляемые объекты будут удалены, регистрация NSManagedObjectContextObjectsDidChangeNotification и NSManagedObjectContextDidSaveNotification и очистить файлы, которые вы можете получить от объектов в NSDeletedObjectsKey и NSUpdatedObjectsKey.

0

Основные данные, вероятно, являются лучшим решением для вас. Работа с FS (Файловая система) была бы немного грязной.

Искать документы Apple для Core Data, и вы получите всю необходимую информацию.

+0

Согласны, что касается производительности, я изменил проект с FS на CoreData для хранения мультимедиа, и я не видел замедление. – NWCoder

0

Приложения NYTimes хранят изображения в файловой системе: папка с кешем.

Для большого количества изображений база данных может быть более грязной, чем файловая система. Изображения статьи также считаются ленивыми, сменными данными. Хранение большого количества из них в БД безответственно, потому что вы отсоединяете постоянное дисковое пространство на устройстве, компьютер пользователя (резервные копии) и, возможно, iCloud.