2010-06-10 2 views
5

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

Reading от Apple прибегая к помощи в течение нескольких дней я пришел к следующему выводу: - Создание 1 DataModel, который содержит описание всех объектов - Использовать 1 настойчивого магазин координатор

  • Использование конфигурации для хранения объектов изображения в другом файле (sqlite), чем другие объекты (см. here)

  • И поскольку Core Data не поддерживает отношения из экземпляров в одном постоянном хранилище с экземплярами в другом постоянном хранилище, нам е «Извлечена Свойства», чтобы создать слабые, односторонние отношения

Использование конфигурации довольно проста: назначить конфигурацию к объекту с помощью модельера данных и объявить, какую конфигурацию использовать при добавлении постоянного хранилища к координатору , В моем случае я добавил в магазины координатору.

Но вот в чем проблема: при извлечении, скажем, объектов «Пользователь» из одного хранилища, как использовать загруженные свойства для загрузки изображений, связанных с этим пользователем (и назначить их объекту пользователя)?

Должен ли я писать пользовательский метод доступа для «изображений» в пользовательском объекте? Как (и где) указать предикат для выбранного свойства?

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

Любая идея?

Надеемся, мы сможем начать обсуждение этой темы. Я уверен, что есть другие (более умные) способы решить эту проблему ...

ответ

1

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

Вам необходимо сохранить некоторые идентифицирующие атрибуты изображений в классе User. Я бы использовал преобразованное свойство для хранения идентификаторов объектов менеджера. Вы добавляете выбранное свойство в устройство моделирования данных и также указываете предикат.

1

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

См. Раздел BLOB здесь.

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdPerformance.html

Смежные вопросы