无法实例化NSManagedObject的子类
Xcode 6有很多bug。 但是我不太确定这是否是一个错误。 这可能不是,因为这是我刚刚正在学习的东西。
我的问题是,任何时候我尝试实例化我的NSManagedObject的子类,我没有select传递entity: NSEntityDescription
和NSManagedContext: 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字段中前缀类名检查员与您的模块的名称。
构造函数是在Swift中inheritance的吗?
我会尝试使用NSEntityDescription.insertNewObjectForEntityForName:inManagedObjectContext