Два постоянных хранилища для одного контекста управляемого объекта — возможно?

У меня довольно сложная модель данных примерно с 10 объектами. Некоторые нужно хранить на диске, а другие просто должны быть доступны в памяти во время работы приложения. Можно ли добиться этого, используя два постоянных хранилища для одного и того же контекста управляемого объекта, или мне следует соответствующим образом разделить свои модели данных?


person ruipacheco    schedule 22.03.2011    source источник


Ответы (2)


Да, ваш NSManagedObjectContext использует NSPersistentStoreCoordinator, чтобы определить, какое хранилище должна использовать конкретная модель. Установив координатор постоянного хранилища контекста управляемого объекта, вы можете определить пользовательское сопоставление, которое использует несколько постоянных хранилищ разных типов.

http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/Articles/cdBasics.html#//apple_ref/doc/uid/TP40001650-SW4

person Jonah    schedule 23.03.2011
comment
+1 Чтобы расширить, вы должны использовать конфигурации и поместить объекты, которые необходимо хранить на диске, в одну конфигурацию, а в памяти - в другую. Назначьте соответствующие конфигурации соответствующему хранилищу при создании хранилищ. Имейте в виду, что вы не можете использовать прямые отношения между хранилищами, а вместо этого должны полагаться на извлеченные отношения. - person TechZen; 23.03.2011

Вы можете использовать конфигурации, как упоминалось в TechZen:

  1. Создание конфигураций в редакторе модели управляемых объектов (файл .xcdatamodel);
  2. В коде добавьте несколько постоянных хранилищ к координатору постоянных хранилищ, указав соответствующее имя конфигурации.

Подробнее см. мой другой ответ здесь.

person MANIAK_dobrii    schedule 29.08.2012