Взаимосвязь основных данных с извлеченными свойствами - PullRequest
5 голосов
/ 10 июня 2010

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

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

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

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

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

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

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

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

Есть идеи?

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

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

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

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

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

1 голос
/ 01 июля 2010

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

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

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