CoreData настроить модель отображения - PullRequest
0 голосов
/ 22 июня 2010

У меня проблема с отображением следующей ситуации из v1 в v2 базовой модели данных.

В v1 модели у меня была сущность с именем book с атрибутом author.Там я сохранил имя и фамилию автора и даже имена и фамилии нескольких авторов.Очень плохой дизайн, я знаю, но так оно и было.

В v2 модели я сделал это лучше и добавил автора сущности с атрибутами namename и lastname и отношением к книге.Кто-нибудь знает, как я могу настроить модель отображения таким образом, чтобы она вызывала функцию (которая возвращает число авторов, разделенных имя и фамилию) и создавала новые объекты, относящиеся к выводу этой функции?

Спасибо, б00цы

Ответы [ 2 ]

3 голосов
/ 22 июня 2010

Вы начинаете с создания модели отображения между исходной и целевой моделями.Оттуда вы хотите выбрать объект в модели отображения, который вы хотите обработать этим разделением.Справа от редактора модели сопоставления вы увидите, где можно назвать класс NSEntityMigrationPolicy.Добавив сюда пользовательский класс политики сопоставления, вы можете указать переносу использовать ваш код вместо стандартного кода.

Оттуда создайте класс и сделайте его подклассом NSEntityMigrationPolicy.Внутри этого класса переопределите метод -createDestinationInstancesForSourceInstance: entityMapping: manager: error:.Этот метод будет вызываться один раз для каждого объекта, и вы несете ответственность за создание целевого объекта и копирование всех атрибутов из источника в место назначения.Как часть этой копии вы можете разделить имя на имя и фамилию, исходя из логики, которую вы считаете подходящей.В конце этого метода убедитесь, что вы вызываете -associateSourceInstance: withDestinationInstance: forEntityMapping:, чтобы NSMigrationManager знал о вновь созданном целевом объекте, а остальная часть миграции работала корректно.

ПРИМЕЧАНИЕ: вам не нужнопереопределите любой из методов, связанных с отношениями, если только вам не нужно писать собственный код для них.

Это все, что нужно сделать.

0 голосов
/ 22 июня 2010

В руководстве по программированию версий и миграции данных базовой модели 1002 * показано, как выполнить перенос.

Что касается разделения имени / фамилии, у вас может быть проблема там.Где вы разделяете имя / фамилию?По пробелам?А как насчет "Дель Торрес" и тому подобное?А как насчет авторов, которые используют свои "вторые имена"?

Это сложный вопрос, который стоит учитывать.

...