一尘不染

找不到NSManagedObject的特定子类 迅速

swift

我正在使用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
子类中定义实例方法?


阅读 506

收藏
2020-07-07

共1个答案

一尘不染

Xcode 7的更新(最终):不再需要在类之前添加模块名称(如Xcode6和Xcode7的早期beta版本一样)。Apple文档“ 实现核心数据托管对象子类”已相应更新。

数据模型检查器现在为实体具有两个字段“类”和“模块” :

当您为实体创建Swift管理对象子类时,“模块”字段将设置为“当前产品模块”,并且使用此设置,
可以在主应用程序和单元测试中创建实例。托管对象子类不得标记@objc(classname)。

或者,您可以清空“模块”字段(它将显示“无”)并用标记托管对象子类@objc(classname)

备注:此答案最初是为Xcode 6写的。
针对此问题,各种Xcode 7 beta版本中都有一些更改。
由于它是一个被接受的答案,带有很多支持和链接,因此,我试图
总结当前Xcode 7最终版本的情况。

我进行了自己的“研究”,并阅读了该问题
和类似问题CoreData的
所有答案:警告:无法加载 名为的类。因此,归因于所有这些人,即使我没有
具体列出它们!

2020-07-07