Я согласен с Луи: то, что вы делаете, - это опасный дизайн, и вам следует перестраивать весь стек, а не обменивать магазины таким образом. Восстановление полного стека не требует больших затрат.
Кроме того, если вы используете совершенно разные модели с совершенно разными объектами данных, вам не нужно их удалять, вы можете добавить все модели вместе в одно постоянное хранилище и в зависимости от того, какую сущность вы создаете, Core Data сделает правильная вещь.
Если вы строите несколько моделей с одинаковой сущностью, тогда возникает вопрос почему ? Вы не получите от этого никаких преимуществ в производительности.
Обновление
В описанной вами ситуации я бы поместил все хранилища в один постоянный координатор хранилища, а затем дал указание контексту, в котором хранится сущность, с помощью -assignObject:toPersistentStore:
. Это избавит от необходимости создавать и разбирать несколько стеков базовых данных.
Обновление 2
Новый стек - это весь стек. PSC, MOM и MOC. Вы вытаскиваете коврик из-под стека базовых данных и ожидаете, что он просто выяснит, что вы делаете.
Какова ваша конечная цель?
Позднее обновление
Хм, так какой будет приемлемый сценарий для создания только PS и MOC и использования существующих PSC и MOM? Если бы я догадался, я бы сказал, что каждый раз, когда я вносил изменения в существующий стек, он должен создаваться заново и что, если использовалось несколько хранилищ, они должны быть введены во время создания.
NSManagedObjectModel
, NSPersistentStoreCoordinator
и NSPersistentStore
довольно тесно связаны между собой, поэтому неясно, какова ваша цель здесь. Если вы обновите свой вопрос тем, что пытаетесь выполнить, ответы на него станут менее размытыми.
Наличие нескольких экземпляров NSManagedObjectContext
обычно используется, когда вы имеете дело с несколькими потоками и несколькими очень редкими крайними случаями. Наличие нескольких экземпляров NSPersistentStore
обычно используется, когда у вас есть данные, которые по той или иной причине должны быть скрыты (частично только для чтения и т. Д.). Это нормальные случаи использования.
Хотя мой вопрос остается открытым, чего вы пытаетесь достичь?
Обновление по цели
Я занимаюсь разработкой приложения для чтения Библии, которое импортировало бы переводы из XML в базовые данные SQL. В настоящее время может использоваться только один перевод.
Хорошо, вам не нужны отдельные файлы для каждого перевода, это пустая трата времени. Поскольку каждый перевод идентифицируется кодом (например, ASM) и именем, авторским правом и т. Д., Вы можете просто создать в своем проекте сущность верхнего уровня, которая называется ... «Перевод» и остальные ветви данных оттуда. Никаких множественных контекстов, никаких переключений, просто работает.
Единственное время, когда вам нужно несколько файлов, - это если вы работаете с несколькими документами, а это не то, что вы делаете на iPhone.