Xcode 4: замена подкласса NSManagedObject

#iphone #xcode #nsmanagedobject #xcdatamodel

#iPhone #xcode #nsmanagedobject #xcdatamodel

Вопрос:

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

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

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

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

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

Ответ №1:

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

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

  2. Перейдите в Terminal и переместите все файлы подкласса NSManagedObject, которые находились в каталоге .xcdatamodeld, в новый каталог в моем исходном каталоге. Кажется, что Finder предотвращает доступ к каталогу, но Terminal этого не делает.

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

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