如何在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 中不起作用

在 Swift 中休眠或延迟 Timer 线程

Swift UI集合视图 - 如何在Cell中显示“segued”用户输入?

使用 Swift Combine 创建一个 Timer Publisher