当我调用函数CacheStation时,我收到错误:CoreData:error:无法在NSManagedObject类SaveModel上调用指定的初始化程序。更不用说了。我该如何解决这个问题?
SaveModel.swift:
import UIKit
class ViewController: UIViewController {
@IBAction func saveShizzle(sender: AnyObject) {
let sm = SaveModel();
sm.CacheStations();
}
}
SaveModel + CoreDataProperties.swift:
{{1}}
我在哪里调用CacheStations:
{{1}}
答案 0 :(得分:1)
这一行:
let sm = SaveModel();
使用标准init()
方法创建SaveModel
的实例,但NSManagedObjects
必须使用指定的初始值进行初始化:
init(entity entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?)
(或者,如在您的CacheStations方法中,使用调用指定初始值的NSEntityDescription.insertNewObjectForEntityForName(_, inManagedObjectContext: moc)
)。
由于似乎创建sm
只是为了有一个实例可以调用CacheStations
,我会将该方法更改为类方法:
class func CacheStations(){
并更改您的saveShizzle
方法以使用类方法:
@IBAction func saveShizzle(sender: AnyObject) {
SaveModel.CacheStations();
}
答案 1 :(得分:0)
以下是发生的事情:
let sm = SaveModel();
时,您正在创建SaveModel
。SaveModel
是NSManagedObject
NSManagedObject
有一个名为init(_: insertIntoManagedObjectContext:)
您需要调用NSManagedObject
指定的初始值设定项或创建自己的指定初始值设定项,以调用超类指定的初始化程序。