我的计时器设置有问题。
我为它写的代码是:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: Selector(("updateTimer")), userInfo: nil, repeats: true)
}
func updateTimer(){
label.text = DateFormatter.localizedString(from: NSDate() as Date, dateStyle: DateFormatter.Style.short, timeStyle: DateFormatter.Style.short)
}
}
我运行应用程序,而不是计时器,我得到一个Thread类型的错误。 类似的东西:
"线程1:发信号SIGBART"
可能是什么问题?
答案 0 :(得分:1)
如果将Selector(("updateTimer"))
替换为#selector(updateTimer)
,
然后,系统会告诉您需要将@objc
添加到updateTimer
功能中。
不相关但不使用NSDate
。
这是您的固定代码:
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)
}
@objc func updateTimer() {
label.text = DateFormatter.localizedString(from: Date(), dateStyle: .short, timeStyle: .short)
}
}
答案 1 :(得分:0)
将您的代码更改为:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)
}
@objc func updateTimer(){
label.text = DateFormatter.localizedString(from: NSDate() as Date, dateStyle: DateFormatter.Style.short, timeStyle: DateFormatter.Style.short)
}
}