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