核心数据实体的Init方法不可用

时间:2014-10-28 12:12:32

标签: ios xcode core-data

我正在使用xcode 6.1并开发iOS 8.1。我有一个名为 CoreDataTest 的简单项目,我在那里玩核心数据。

型号:

import CoreData

class Licence: NSManagedObject {
    @NSManaged var name: String
}

enter image description here

现在我想创建一个许可证对象。这是我在创建对象之前需要的:

let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext!

let ent = NSEntityDescription.entityForName("Licence", inManagedObjectContext: context)

问题是xcode没有为实体提供正确的构造函数。当我开始输入时:

var newLicence = Licence(..

我没有像这个例子那样自动完成:

enter image description here

我只是将NSManagedObject()作为自动完成。任何想法都错了吗?

1 个答案:

答案 0 :(得分:5)

通过阅读NSManagedObject的文档来解决它:)

  

正确配置托管对象以供使用非常重要   核心数据。如果直接实例化托管对象,则必须   调用指定的初始化程序   (initWithEntity:insertIntoManagedObjectContext:)

所以在我的班上我实施了:

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

现在可行。