无法实例化NSManagedObject的子类

Rya*_*ith 6 xcode core-data nsmanagedobject ios swift

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

我的问题是,每当我尝试实例化NSManagedObject的子类时,我都没有选择将entity: NSEntityDescriptionNSManagedContext: insertIntoManagedContext参数传递给构造函数,Xcode在调用中说"额外参数'实体'"

我从头开始创建一个新的Xcode项目,看看我是否可以在一个较小的,最小的项目中重新创建问题.

ToDoList.Item 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)!

}
Run Code Online (Sandbox Code Playgroud)

这是子类:

import UIKit
import CoreData

class Item: NSManagedObject {

    @NSManaged var title: String
    @NSManaged var completed: Bool

}
Run Code Online (Sandbox Code Playgroud)

所有帮助表示赞赏.

Upv*_*ote 6

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

显然我们必须实施

init(entity: NSEntityDescription, insertIntoManagedObjectContext context, NSManagedObjectContext?)
Run Code Online (Sandbox Code Playgroud)

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

override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?) {
    super.init(entity: entity, insertIntoManagedObjectContext: context)
}
Run Code Online (Sandbox Code Playgroud)

到您的实体类,它将工作.