Синхронизация баз данных Core Data в приложениях iOS

У меня есть сомнения по поводу миграции Core Data.

Скажем, у меня есть приложение, которое имеет некоторые предопределенные значения в таблице A. Я хочу синхронизировать его с другой базой данных, с таблицей B таким образом, чтобы при добавлении новых записей в таблицу B эта запись должна была быть добавлена ​​в мою таблицу A .

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

Я хотел бы знать, как моя таблица может быть обновлена ​​добавленными записями в другой таблице.

Обновлять:

Из комментария ниже:

Вопрос, который я имел в виду, заключается в следующем... Я хочу выпустить обновление для своего приложения. Я застрял в том, как обновить существующую базу данных Core Data, в которой также хранятся данные, введенные пользователем. Все, что мне нужно сделать, это обновить пару записей и сохранить текущие пользовательские данные. Как мне это сделать?


person learner2010    schedule 01.03.2011    source источник


Ответы (1)


Core Data — это не SQL. Сущности не являются таблицами. Объекты не являются строками. Столбцы не являются атрибутами. Core Data — это система управления объектным графом, которая может сохранять или не сохранять объектный граф и может использовать или не использовать SQL для этого. Попытка думать о Core Data в терминах SQL приведет к тому, что вы совершенно неправильно поймете Core Data, что приведет к большому огорчению и напрасной трате времени.

На этом пути лежит безумие.

Похоже, вы на самом деле не хотите мигрировать, поскольку этот термин используется в Core Data. Миграция в Core Data означает переход от более ранней версии постоянного хранилища графа данных к более новой версии того же самого.

Например. В версии 1.0 у вас есть сущность Person с атрибутами firstNameи lastName. После выпуска приложения вы хотите обновить его до версии 2.0 и добавить атрибут phoneNumber к объекту Person. Вы должны использовать миграцию для обновления существующих графов объектов пользователя и постоянных хранилищ до нового графа объектов.

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

person TechZen    schedule 01.03.2011
comment
@TechZen .. спасибо за ответ .. Я совсем не понял свой вопрос. вопрос, который я имел в виду, заключается в следующем... Я хочу выпустить обновление для своего приложения. Я застрял в том, как обновить существующую базу данных основных данных, в которой также хранятся данные, введенные пользователем. Все, что мне нужно сделать, это обновить пару записей и сохранить текущие пользовательские данные. Как мне это сделать?? - person learner2010; 03.03.2011
comment
См. тему миграции в Core Data Programming Guide. Похоже, вам, вероятно, не нужно ничего, кроме функции автоматической миграции, т. Е. Если вы предоставляете новую модель, Core Data автоматически обновляет хранилище. Если вам нужно что-то более сложное, API миграции может сделать что угодно. - person TechZen; 03.03.2011
comment
@ TechZen... спасибо за ответ. так что, если я использую API миграции, это автоматически решит мои проблемы, верно? - person learner2010; 04.03.2011
comment
В простых случаях, таких как добавление атрибута, обычно работает автоматическая миграция. Однако существует целый вспомогательный API-интерфейс миграции, который позволяет вам контролировать всю миграцию, какой бы сложной она ни была. Автоматическая миграция подходит для большинства случаев. Apple Docs объясняет, что он обрабатывает, а что нет. - person TechZen; 04.03.2011