Программное создание NSMappingModel - PullRequest
1 голос
/ 25 марта 2010

Я хочу программно (без упрощенной миграции) создать модель сопоставления между двумя абсолютно одинаковыми моделями, за исключением того, что одна из сущностей (есть куча сущностей) имеет разные атрибуты. Давайте назовем эту сущность "Человек". И скажем, модель назначения имеет

1) добавлен новый атрибут под названием «адрес»

2) удалил атрибут «eyeColor»

3) сохранил (то есть ничего не сделал с) атрибут с именем "name"

Как бы вы создали NSMappingModel между этими моделями программно? У меня есть несколько явных вопросов, которые могут помочь мне сделать это самостоятельно:

Q1) Нужно ли создавать объекты NSEntityMapping для всех сущностей , отличных от , кроме "Person", даже если они остаются неизменными?

Q2) Как мне работать с атрибутом "address" в "Person", который является новым создаваемым? Должен ли я каким-то образом создать NSPropertyMapping, который ничего не превращает во что-то («адрес»)?

Q3) Как мне работать с атрибутом "name" в "Person"? Нужно ли для этого создавать NSPropertyMapping, даже если оно просто остается прежним?

Q4) Для NSEntityMapping, соответствующего "Person", является ли не создание какого-либо NSPropertyMapping для "eyeColor" надлежащим способом для его удаления? Или я должен создать NSPropertyMapping для "eyeColor"? Если да, как этот объект будет создан, то есть что определит, что его цель - избавиться от «eyeColor»?

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

1 Ответ

1 голос
/ 26 марта 2010

Я всегда использовал функцию автоматического отображения Xcode, но мне кажется, что вы также можете многому научиться на этом. Создайте модель (части) исходной модели, добавьте версию, измените ее, чтобы она соответствовала целевой модели, и сгенерируйте модель отображения (меню «Дизайн» >> «Модель отображения»). Если вы затем щелкните управляющим щелчком мыши .xcmappingmodel, созданный для вас Xcode, и скажете Finder показать вам содержимое пакета, вы найдете внутри XML-файл, в котором перечислены все сопоставления. Вы можете использовать XML как руководство, чтобы помочь вам воссоздать процесс в коде. Удачи.

...