#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, так это:
-
Удалите ссылку (только ссылку) на модель данных из проекта.
-
Перейдите в Terminal и переместите все файлы подкласса NSManagedObject, которые находились в каталоге .xcdatamodeld, в новый каталог в моем исходном каталоге. Кажется, что Finder предотвращает доступ к каталогу, но Terminal этого не делает.
-
Добавьте модель данных обратно в проект в разделе меню «Добавить существующие файлы в проект».
-
Добавьте файлы подкласса NSManagedObject обратно в проект.