我正在使用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 子类中定义实例方法?
Xcode 7的更新(最终):不再需要在类之前添加模块名称(如Xcode6和Xcode7的早期beta版本一样)。Apple文档“ 实现核心数据托管对象子类”已相应更新。
数据模型检查器现在为实体具有两个字段“类”和“模块” :
当您为实体创建Swift管理对象子类时,“模块”字段将设置为“当前产品模块”,并且使用此设置, 可以在主应用程序和单元测试中创建实例。托管对象子类不得标记@objc(classname)。
或者,您可以清空“模块”字段(它将显示“无”)并用标记托管对象子类@objc(classname)
备注:此答案最初是为Xcode 6写的。 针对此问题,各种Xcode 7 beta版本中都有一些更改。 由于它是一个被接受的答案,带有很多支持和链接,因此,我试图 总结当前Xcode 7最终版本的情况。
我进行了自己的“研究”,并阅读了该问题 和类似问题CoreData的 所有答案:警告:无法加载 名为的类。因此,归因于所有这些人,即使我没有 具体列出它们!