如何在Swift上计算Timer
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Swift上计算Timer相关的知识,希望对你有一定的参考价值。
我是swift的新手,我试着制作一个Timer。它通常应该计算秒数并在调试器中打印它们。
我试过这个:
var timer = Timer()
@IBAction func killTimer(_ sender: AnyObject) {
timer.invalidate()
}
@objc func processTimer() {
print("This is a second")
}
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.processTimer), userInfo: nil, repeats: true)
}
我不知道计时器如何秒数。使用此代码我收到一条失败消息:
@objc func processTimer() {
print("This is second (Timer + 1)")
}
谢谢你的帮助。一个
答案
您需要一个计数器变量,每次计时器触发时它都会递增。
将变量Timer
声明为可选,以使计时器可靠地无效(仅一次)。
var timer : Timer?
var counter = 0
@IBAction func killTimer(_ sender: AnyObject) {
timer?.invalidate()
timer = nil
}
@objc func prozessTimer() {
counter += 1
print("This is a second ", counter)
}
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval:1, target:self, selector:#selector(prozessTimer), userInfo: nil, repeats: true)
}
另一答案
您需要启动计时器,您只需在代码中初始化它,以便在viewDidLoad中添加
timer.fire()
我不确定你想要打印什么,但如果它是时间戳,那么你可以在你的班级添加一个属性
let formatter = DateFormatter()
并将其配置为以秒和毫秒显示时间
formatter.dateFormat = "ss.SSS" //in viewDidLoad
并在您的打印声明中使用它
print("This is a second (formatter.string(from(Date())")
另一答案
如果你想打印通过的时间使用它(如果这是你想要的):
print("time passed: (Date().timeIntervalSince1970 - timer.fireDate.timeIntervalSince1970)")
以上是关于如何在Swift上计算Timer的主要内容,如果未能解决你的问题,请参考以下文章
如何将这个 Objective-C 代码片段写入 Swift?
如何在 Swift 的自定义类中初始化 Timer? [复制]
Timer.scheduledTimer 在 Swift 3 中不起作用