无法实例化NSManagedObject的子类
Xcode 6有大量的错误。但我不太确定这是否是一个错误。这可能不是,因为这是我现在正在学习的东西。无法实例化NSManagedObject的子类
我的问题是,任何时候我尝试实例我NSManagedObject的子类,我不必通过entity: NSEntityDescription
和NSManagedContext: 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)!
}
这里的子类:
import UIKit
import CoreData
class Item: NSManagedObject {
@NSManaged var title: String
@NSManaged var completed: Bool
}
所有帮助表示赞赏。
在同样的问题时只需传来:Init method for core data entity not available
很显然,我们必须实现我们自定义的NSManagedObject类
init(entity: NSEntityDescription, insertIntoManagedObjectContext context, NSManagedObjectContext?)
方法。因此,只需将
override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?) {
super.init(entity: entity, insertIntoManagedObjectContext: context)
}
添加到您的实体类中,它将起作用。
是在Swift中继承的构造函数吗?
我会尝试使用NSEntityDescription.insertNewObjectForEntityForName:inManagedObjectContext
看起来这将需要在我的工作。但我已经看到它通过子类来完成。 – 2014-10-28 03:14:25
尝试不感叹号的最后一行,就像这样:
var item = Item(entity: ent, insertIntoManagedObjectContext: context)
,也许你还没有加入您的应用程序名称,类名:
雨燕类的命名空间 - 他们作用域到它们编译的模块(通常是项目)。要将NSManagedObject类的Swift子类与Core Data模型一起使用,请在模型实体检查器的Class字段中将类名称作为模块名称的前缀。
我上面说过......“ToDoList.Item在数据模型检查器中设置为Item实体类。” ToDoList是项目名称。删除感叹号会引发错误。尽管感谢您的意见 – 2014-10-31 19:47:32
这在最近的SDK版本中必须要求。我在YouTube上看到过M2KDev没有它。 – 2014-10-31 19:50:31