getTimeElapsed 在 Swift 与 NSTimer

getTimeElapsed in Swift with NSTimer

我是 Swift 的初学者,我遇到了一个问题。

我想创建一个包含计时器和按钮的 class 每次点击按钮我都必须重新启动计时器,如果计时器启动和点击按钮之间经过的时间大于(或等于)400 毫秒,我必须调用选择器中的函数。

但是 swift 中没有 "GetTimeElapsed()" 方法,我不知道该怎么做。 如果你有一些 clue/tutorials 会很酷!

谢谢大家

几个小步骤:​​

  1. 定义开始时间:(应该在您启动计时器的同时发生)

    startTime = (NSDate.timeIntervalSinceReferenceDate())

  2. 测量时差

    let elapsed = NSDate.timeIntervalSinceReferenceDate() - startTime

默认情况下,NSTimer 没有此功能。
正确的方法是处理日期并进行比较。

顺便说一句,你可以像这样做一个很好的扩展:

public extension NSTimer {
    var elapsedTime: NSTimeInterval? {
        if let startDate = self.userInfo as? NSDate {
           return NSDate().timeIntervalSinceDate(startDate)
        }
        return nil 
    }
}

这样,当你创建你的计时器时,你必须设置 userInfo:

let timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(foo), userInfo: NSDate(), repeats: true)

在您的 'foo' 方法中,您可以测试经过的时间:

func foo() {
   print(self.timer.elapsedTime)
}