UIApplication.sharedApplication()。委托为! AppDelegate EXC_BREAKPOINT

时间:2016-09-21 08:25:26

标签: swift xcode core-data

我正在尝试使用CoreData来保存数据,今天当我尝试测试应用程序时,我收到了消息:“致命错误:在解包可选值时意外发现nil”和EXC_BREAKPOINT消息。

class ViewController: UIViewController {

let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedObjectContext: NSManagedObjectContext = appDelegate.managedObjectContext <-- Here is the error

如果我使用UIApplication.sharedApplication()。委托为! AppDelegate从AppDelegate调用任何其他函数我得到了同样的错误。 有谁知道修复它?

1 个答案:

答案 0 :(得分:0)

在初始化期间,无法保证managedObjectContext可用。 将viewDidLoad声明为隐式展开的可选项,并在class ViewController: UIViewController { var managedObjectContext: NSManagedObjectContext! override func viewDidLoad() { super.viewDidLoad() let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate managedObjectContext = appDelegate.managedObjectContext } }

中指定值
lazy var managedObjectContext : NSManagedObjectContext = {
   let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
   return appDelegate.managedObjectContext
}()

或者将该变量声明为在类的顶层初始化为lazy。

name_list