以编程方式在 AppDelegate 中分配 rootViewController 时崩溃

Crash when assigning rootViewController in the AppDelegate programmatically

我没有使用故事板,所以我在 AppDelegate 中遇到了问题。看起来很容易,但我无法解决问题。

我的Appdelegate.swift文件代码如下。

window = UIWindow(frame: UIScreen.mainScreen().bounds)
window?.backgroundColor = UIColor.whiteColor()
window?.rootViewController = LineChartViewController(coder: NSCoder.init())
window?.makeKeyAndVisible()

我的自定义 LineChartViewController.swift 文件代码如下。

required init?(coder aDecoder: NSCoder)
    {
        super.init(coder: aDecoder)
        centralManager = CBCentralManager(delegate: self, queue: dispatch_get_main_queue())
    }

在 运行 这段代码之后,我收到一条错误消息,即“decodeObjectForKey: cannot be sent to an abstract object of class NSCoder: Create a concrete instance!'

你能帮帮我吗?

您不想在这里使用 NSCoding

NSCoding 用于将对象存档和取消存档为 NSData 格式,您只想创建一个新的 LineChartViewController 实例。

因此,当您设置 rootViewController 时,您想执行以下操作:

window?.rootViewController = LineChartViewController()

要进行设置,您应该覆盖 viewDidLoad():

override func viewDidLoad() {
    super.viewDidLoad()
    centralManager = CBCentralManager(delegate: self, queue: dispatch_get_main_queue())
}