无法实例化NSManagedObject的子类

Xcode 6有很多bug。 但是我不太确定这是否是一个错误。 这可能不是,因为这是我刚刚正在学习的东西。

我的问题是,任何时候我尝试实例化我的NSManagedObject的子类,我没有select传递entity: NSEntityDescriptionNSManagedContext: insertIntoManagedContext参数给构造函数,Xcode在调用“额外参数”实体“

我从头开始创build一个新的Xcode项目,只是为了看看我是否可以在一个更小的,最小的项目中重新创build问题。

ToDoList.Item在Data Model Inspector中被设置为Item实体类。

代码如下:

 override func viewDidLoad() { super.viewDidLoad() let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate let context: NSManagedObjectContext = appDel.managedObjectContext! let ent = NSEntityDescription.entityForName("Item", inManagedObjectContext: context)! //compiler complains here var item = Item(entity: ent, insertIntoManagedObjectContext: context)! } 

这是子类:

 import UIKit import CoreData class Item: NSManagedObject { @NSManaged var title: String @NSManaged var completed: Bool } 

所有的帮助表示赞赏。

刚刚遇到同样的问题: 核心数据实体的Init方法不可用

显然我们必须执行

 init(entity: NSEntityDescription, insertIntoManagedObjectContext context, NSManagedObjectContext?) 

方法在我们的自定义NSManagedObject类中。 所以只需添加

 override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?) { super.init(entity: entity, insertIntoManagedObjectContext: context) } 

到你的实体类,它会工作。

尝试最后一行没有感叹号,如下所示:

 var item = Item(entity: ent, insertIntoManagedObjectContext: context) 

也许你还没有添加你的应用程序名称类名称:

Swift类是命名空间的 – 它们的作用范围是它们被编译的模块(通常是项目)。要使用Core Data模型的NSManagedObject类的Swift子类,在模型实体的Class字段中前缀类名检查员与您的模块的名称。

班级名称 https://developer.apple.com/library/mac/documentation/Swift/Conceptual/BuildingCocoaApps/WritingSwiftClassesWithObjective-CBehavior.html

构造函数是在Swift中inheritance的吗?

我会尝试使用NSEntityDescription.insertNewObjectForEntityForName:inManagedObjectContext