我有下面的類從NSManagedObject
繼承:錯誤與斯威夫特和核心數據:致命錯誤:使用「的init(單位:insertIntoManagedObjectContext :)」未實現初始化的
import Foundation
import CoreData
class Note: NSManagedObject {
@NSManaged var text: String
@NSManaged var name: String
init(name: String, text:String, context: NSManagedObjectContext){
let entity = NSEntityDescription.entityForName("Note", inManagedObjectContext: context);
super.init(entity: entity!, insertIntoManagedObjectContext: context)
self.text = text
self.name = name;
}
}
當我創建它的實例,一切正常,但是當我做這些實體的搜索,我得到一個非常奇怪的錯誤:
fatal error: use of unimplemented initializer 'init(entity:insertIntoManagedObjectContext:)'
這是導致該錯誤代碼:
func coreDatePlayground(){
var note = Note(name: "A new note", text: "blah", context: self.managedObjectContext!)
println("\(note.name) \(note.text)")
var noote2 = Note(name: "Another note", text: "blah blah", context: self.managedObjectContext!)
managedObjectContext?.save(nil)
var fetch = NSFetchRequest(entityName: "Note")
// This line causes the crash.
var results = self.managedObjectContext?.executeFetchRequest(fetch, error: nil)
if let objects = results{
println(objects.count)
}
}
我發現改變初始化方式,使其成爲一種方便的方式,並調用自我而不是超級解決問題,但我不知道爲什麼。
convenience init(name: String, text:String, context: NSManagedObjectContext){
let entity = NSEntityDescription.entityForName("Note", inManagedObjectContext: context);
self.init(entity: entity!, insertIntoManagedObjectContext: context)
self.text = text
self.name = name;
}
上面的代碼工作,但我不知道爲什麼。任何人都知道發生了什麼事?這是一個錯誤還是我的錯?
你知道了嗎?我不覺得答案給出了適當的解釋。 – kgaidis 2016-08-31 01:38:01