swift - UIApplication.sharedApplication().delegate as! AppDelegate EXC_BREAKPOINT

标签 swift xcode core-data

我正在尝试使用 CoreData 来保存数据,今天当我尝试测试应用程序时,我收到消息:“ fatal error :在展开可选值时意外发现 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().delegate 作为! AppDelegate 从 AppDelegate 调用任何其他函数我得到同样的错误。 有人知道解决办法吗?

最佳答案

在初始化期间,不保证AppDelegate可用。 将 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
}()

关于swift - UIApplication.sharedApplication().delegate as! AppDelegate EXC_BREAKPOINT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39611208/

相关文章:

ios - 使用 viewDidAppear 呈现一个 View Controller,当它关闭时重新打开它

ios - 此构建无效。用于上传应用程序

c++ - 加载 View Controller 时播放声音

swift - Xcode Swift在项目中使用.db数据库

swift - 快速向上滚动时,UITableViewCells 在标题后面可见

ios - 如何实现交互式单元格滑动以触发过渡动画,如 WhatsApp

ios - Cocoa Touch Frameworks - 位码支持

ios - 没有一个有效的配置文件包含设备?

cocoa - tableCellView 内的 NSButton : how to use the "action invocation" for a View Based NSTableView/NSArrayController

ios - NSIndexPath:从 CoreData 检索数据