如何在Swift中创建一个managedObjectContext实例

时间:2016-02-14 22:00:09

标签: swift core-data

我尝试使用CoreData来保存一些信息。

这是我的ViewController类:

import UIKit
import CoreData

class ContactView: UIViewController {

    @IBOutlet weak var nameTextField: UITextField!
    @IBOutlet weak var saveButton: UIButton!

    var managedObjectContext: NSManagedObjectContext? = {
        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        //ERROR
        if let managedObjectContext = appDelegate.managedObjectContext {
            return managedObjectContext
        }
        else {
            return nil
        }
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

我收到以下错误:

  

'条件绑定的初始化程序必须具有可选类型,而不是   的NSManagedObjectContext'

我无法理解这个错误,因为 var managedObjectContext:NSManagedObjectContext?应该是可选的!?我从Swift参考书中得到了这个例子......

感谢您的任何建议!

1 个答案:

答案 0 :(得分:2)

NSManagedObjectContext中的AppDelegate实例不是可选的:

var managedObjectContext: NSManagedObjectContext = {
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    return appDelegate.managedObjectContext
}()

不要使用参考书籍,它们可能已过时。信任编译器消息。