当我尝试在swift中更新标签时,我收到以下错误。
致命错误:在解包可选值时意外发现nil
一定有我遗失的东西。这些是涉及的两个变量:
这是func
,我似乎得到了错误:
据我所知,我想要更新标签的变量的值为19.875531899929
,我希望标签显示Int
部分。零是从哪里来的?我找不到这个错误了。
我在 AppDelegate.swift 的applicationDidBecomeActive
方法中从ViewController实例调用该方法的事实可以与它有关吗?这是调用方法的简短代码:
func applicationDidBecomeActive(application: UIApplication) {
viewControllerInstance.convertAlertTimeToCountdownFromMinutes()
}
AppDelegate.swift 中的变量:
var viewControllerInstance = ViewController()
答案 0 :(得分:2)
您的UILabel
对象为零,忘记将IBOutlet
与viewController
标签相关联,请尝试将IBOutlet
与UILabel
s连接命名为 lblMinutes 和 lblMinutesTag 。
新修改
如果您想在应用激活时更新标签的价值,可以使用NSNotificationCenter
,在viewController
内添加以下代码。
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "applicationBecameActive:",
name: UIApplicationDidBecomeActiveNotification,object: nil)
}
func applicationBecameActive(notification: NSNotification){
self.convertAlertTimeToCountdownFromMinutes()
}
deinit{
NSNotificationCenter.defaultCenter().removeObserver(self)
}