class Alternative: NSManagedObject {
@NSManaged var text: String
@NSManaged var isCorrect: Bool
@NSManaged var image: NSData
}
convenience init(text: String, isCorrect: Bool, entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext!) {
let alternative = Alternative(entity: entity, insertIntoManagedObjectContext: context) as Alternative
alternative.text = text
alternative.isCorrect = isCorrect
return alternative
}
我想打,让我初始化新对象与此调用的方法:如何在Swift中为NSManagedObject子类创建指定的初始值设定项?
let newAlternative = Alternative("third platform", True, entityDescription, managedObjectContext)
,但我得到的错误:
Convenience initializer for Alternative must delegate with self.init
我需要什么,我initalizer改变使我的示例使用工作?
class func newInstance(text: String, notes:String,
context: NSManagedObjectContext) -> Item {
var item = NSEntityDescription.insertNewObjectForEntityForName("Item",
inManagedObjectContext: context) as Item
item.notes = notes
item.text = text
return item
}
,你可以这样调用(几乎一样漂亮):
let item = Item.newInstance(text, notes:notes)
快速的额外问题@ martin-r:我试图将这些放入NSManagedObject的扩展中。你认为这应该是可能的,因为我得到一个编译错误。它似乎在寻找NSManagedObject.h中使用的NS_DESIGNATED_INITIALIZER。有什么想法吗? – Damien 2014-10-18 18:30:18
@Damien:不是没有看到实际的代码和确切的错误信息。 – 2014-10-18 19:04:12
https://gist.github。com/dglancy/2f1e313cfcc7d61cff8c – Damien 2014-10-18 19:12:02