[ios] Не удалось найти конкретный подкласс NSManagedObject


Answers

Как примечание. Я была такая же проблема. И все, что я должен был сделать, это добавить @objc(ClassName) в мой файл класса.

Пример:

@objc(Person)
class Person { }

И это решило мою проблему.

Question

Я работаю над разработкой приложения с помощью Core Data. Когда я создал экземпляр, используя:

let entity = NSEntityDescription.entityForName("User", inManagedObjectContext: appDelegate.managedObjectContext)
let user = User(entity: entity, insertIntoManagedObjectContext: appDelegate.managedObjectContext)

Я получил предупреждение в журнале:

CoreData: warning: Unable to load class named 'User' for entity 'User'.  Class not found, using default NSManagedObject instead.

Как я могу это исправить?

И еще один вопрос: как я могу определить метод экземпляра в подклассе NSManagedObject?

Редактировать:

Я указал класс объекта как на следующем скриншоте:




Вышеприведенные ответы помогли мне, но это может помочь кому-то. Если вы, как я, вы их делали и все еще испытываете проблемы, не забудьте просто «очистить свой проект». Для XCode8, Product> Clean. Затем снова запустите.




Если вы используете дефис в имени вашего проекта, например «My-App», используйте знак подчеркивания вместо дефиса, например «My_App.MyManagedObject». В общем, посмотрите имя файла xcdatamodeld и используйте тот же префикс, что и в этом имени. Т.е. для «My_App_1.xcdatamodeld» требуется префикс «My_App_1»




Не забудьте удалить свой модуль :




У меня было то же предупреждение, хотя мое приложение, похоже, отлично работало. Проблема заключалась в том, что при запуске Editor> Create NSManagedObject Subclass на последнем экране я использовал местоположение группы по умолчанию, без каких-либо целевых объектов, которые были отображены или отмечены, и сохранили подкласс в верхней директории MyApp, где находился MyApp.xcodeproj.
Предупреждение исчезло, когда я вместо этого изменил группу, чтобы быть в подпапке MyApp, и проверил цель MyApp.




Вышеуказанные ответы были полезны. Эта быстрая проверка работоспособности может сэкономить вам некоторое время. Перейдите в Project> Build Phases> Compile Sources и удалите xcdatamodeld и ваши файлы модели с помощью кнопки «-», а затем добавьте их обратно с помощью кнопки «+». Перестроить - это может позаботиться об этом.




Related