如何在Swift上计算Timer

问题描述 投票:1回答:3

我是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)")
}

谢谢你的帮助。一个

swift timer
3个回答
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)

}

0
投票

您需要启动计时器,您只需在代码中初始化它,以便在viewDidLoad中添加

timer.fire()

我不确定你想要打印什么,但如果它是时间戳,那么你可以在你的班级添加一个属性

let formatter = DateFormatter()

并将其配置为以秒和毫秒显示时间

formatter.dateFormat = "ss.SSS" //in viewDidLoad

并在您的打印声明中使用它

print("This is a second \(formatter.string(from(Date())")

-1
投票

如果你想打印通过的时间使用它(如果这是你想要的):

print("time passed: \(Date().timeIntervalSince1970 - timer.fireDate.timeIntervalSince1970)")
© www.soinside.com 2019 - 2024. All rights reserved.