Объединение двух магазинов SQLite в один - PullRequest
2 голосов
/ 18 сентября 2010

Скажем, у меня в каталоге документов приложения есть два файла SQLite. Как мне объединить их вместе и сохранить их как один файл, содержащий всю информацию из обоих? Нужно ли буквально создавать два постоянных координатора хранилища и вручную координировать процесс между ними, или есть более эффективный способ сделать это?

-Ash

Ответы [ 2 ]

6 голосов
/ 18 сентября 2010

Ваш вопрос не совсем то, что вам нужно задать. Хранилище SQLite в Core Data - это просто хранилище для графа объекта Core Data. Тот факт, что это база данных SQLite, не имеет значения для Core Data. Таким образом, ваш вопрос действительно таков: «Как объединить два графа объектов Core Data в один?»

Это зависит от того, что вы хотите сделать с данными. Одним из правил в Базовых данных является то, что вы не можете иметь отношения между двумя объектами в разных постоянных хранилищах. Итак, если вам не нужны отношения между объектами в Магазине A и объектами в Магазине B, это действительно довольно просто. Просто добавьте оба постоянных хранилища в NSPersistentStoreCoordinator, и все объекты из обоих хранилищ будут доступны из любого контекста управляемого объекта, связанного с этим координатором постоянного хранилища.

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

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

Не знаете, что такое координатор магазина, но разве вы не можете просто сбросить данные из первой и загрузить их во вторую?

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