2012-02-22 3 views
2

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

От this answer:

Если вам не нужно иметь отношения между объектами в обоих магазинах, или вы действительно просто хотите иметь один магазин, лучше всего было бы создать второй NSPersistentStoreCoordinator и в-третьих, в отдельном постоянном хранилище для хранения объединенного графа объектов. Вам нужно будет написать код для создания копий объектов в контексте управляемого объекта, прикрепленных к этому второму NSPsistentStoreCoordinator. Вам нужно будет установить те же отношения между копиями, что и исходные объекты, но как вы это делаете, зависит от вашей модели данных.

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

ответ

0

В конечном счете, я использовал следующий подход:

[migrator migrateStoreFromURL:[NSURL fileURLWithPath:incomingPath] 
         type:nil 
         options:nil 
      withMappingModel:managedObjectModel 
      toDestinationURL:[NSURL fileURLWithPath:finalPath] 
       destinationType:nil 
      destinationOptions:nil 
         error:&err]; 

[persistentStoreCoordinator removePersistentStore:[[persistentStoreCoordinator persistentStores]lastObject] error:&err]; 

Файл в «incomingPath» был магазин я импортировал файл в «finalPath» уже несуществующей магазин, который я хотел слиться. Оба магазина были открыты в одном и том же постоянном координаторе, и оба используют одну и ту же объектную модель. Затем я удалил входящий магазин и больше не смотрел на него; Полагаю, я мог бы удалить его на уровне файловой системы.

Для моих конкретных потребностей данных я затем извлекал все записи, выписывал дубликаты и сохранял контекст.

Я публикую этот ответ, потому что в качестве новичка данных ядра эта простая миграция решила проблему «не удается сохранить отношения с объектами в разных магазинах» неинтуитивно.

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