以编程方式在 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())
}
我没有使用故事板,所以我在 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())
}