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

时间:2016-02-13 12:48:17

标签: ios swift appdelegate nscoder

我没有使用故事板,所以我在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!'"

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您不希望在此处使用NSCoding

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

因此,当您设置rootViewController

时,您需要执行以下操作
window?.rootViewController = LineChartViewController()

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

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