Xcode 4: заменить NSManagedObject подкласс - PullRequest
2 голосов
/ 25 октября 2011

У меня есть проект из Xcode 3, который я провел через процесс преобразования, чтобы сделать его совместимым с Xcode 4.В этом проекте все мои подклассы NSManagedObject находятся внутри группы с именем «.xcdatamodeld».

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

В Xcode 3 я бы выбрал сущности, которые я хотел восстановить и выбрал Файл -> Создать.Это заменит соответствующие классы в группе .xcdatamodeld.

В Xcode 4 это тот же процесс, за исключением того, что сгенерированные подклассы NSManagedObject пойдут куда угодно, кроме этой группы .xcdatamodeld.Кроме того, я не могу удалить файлы из этой группы.Там нет никаких сообщений об ошибках или уведомлений, объясняющих почему.Он просто ничего не делает, когда я нажимаю клавишу удаления.

Обходной путь, который я использую, - это перейти в Finder (или Терминал), удалить старые классы, а затем переместить новые сгенерированные классы в .xcdatamodeldкаталог.Есть новая парадигма, которую я пропускаю или что-то?Обходной путь кажется излишне утомительным.

1 Ответ

2 голосов
/ 27 октября 2011

Похоже, что парадигма «группа xcdatamodeld с файлами подкласса NSManagedObject под ней» была удалена начиная с Xcode 4. В Xcode 4 она работает так, что модель данных существует как файловый узел, а подклассы NSManagedObject - жить в другой группе в проекте вообще. Чтобы завершить обновление моего проекта Xcode 3, я сделал следующее:

  1. Удалите ссылку (только ссылка) на модель данных из проекта.

  2. Перейдите в терминал и переместите все файлы подкласса NSManagedObject, которые были в .xcdatamodeld каталог в новый каталог под моим исходным каталогом. Похоже, что Finder запрещает доступ к каталогу, а терминал - нет.

  3. Добавьте модель данных обратно в проект в пункте меню «Добавить существующие файлы в проект».

  4. Добавьте файлы подкласса NSManagedObject обратно в проект.

...