“AppDelegate”类型的值没有成员“managedObjectContext”

时间:2017-11-24 03:24:36

标签: ios swift core-data

func saveName(name: String){
   //1
    let appDelegate = UIApplication.shared.delegate as! AppDelegate

    let managedContext = appDelegate.managedObjectContext!
    //2
    let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext:managedContext)
    //3
    person.setValue(name, forKey: "name")
    //4
    var error: NSError?
    if !managedContext.save(&error) {
        print("Could not save \(error!), \(String(describing: error?.userInfo))");
    }
    //5
    people.append(person)
}

我无法让这个程序正常工作。我正在尝试保存到CoreData。

3 个答案:

答案 0 :(得分:0)

Swift 3 中,您可以像下面这样访问上下文对象: -

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

答案 1 :(得分:0)

由于经常使用托管对象上下文,因此在AppDelegate

中添加一个惰性实例化属性
lazy var managedObjectContext : NSManagedObjectContext = {
    return self.persistentContainer.viewContext
}()

entitymanagedObjectContext都应该是非可选的。

答案 2 :(得分:-1)

更改代码中的第二行以访问托管对象上下文

let managedContext = appDelegate.persistantContainer.Viewcontext