使用Swift 4在WatchOS中创建一个简单的计时器

时间:2017-11-06 21:56:01

标签: ios swift timer nstimer watch-os

看似简单,但我很挣扎......下面的代码在设置workoutTimer日期的行上崩溃了。我的WKInterfaceTimer也没有连接到IBOutlet,它需要吗?我只是出于时间的目的而使用它。

class InterfaceController { 
            var workoutTimer: WKInterfaceTimer!
            var workoutStartTime: NSDate? = nil

    func startWorkOutTimer() {
   self.startWorkout()
            if let test = self.workoutSecondsElapsed() {
            print("timer seconds = \(test)")
            }
}


    func startWorkout() {
        // To count up use 0.0 or less, otherwise the timer counts down.
        workoutTimer.setDate(NSDate(timeIntervalSinceNow: 0.0) as Date)
        workoutTimer.start()
        self.workoutStartTime = NSDate()
    }

    func stopWorkout() {
        workoutTimer.stop()
    }

    func workoutSecondsElapsed() -> TimeInterval? {
        // If the timer hasn't been started then return nil
        guard let startTime = self.workoutStartTime else {
            return nil
        }
        // Time intervals from past dates are negative, so
        // multiply by -1 to get the elapsed time.
        return -1.0 * (self.workoutStartTime?.timeIntervalSinceNow)!
    }

}

1 个答案:

答案 0 :(得分:1)

来自 Apple doc:

  

不要自己子类化或创建此类的实例。而是在接口控制器类中定义出口,并将它们连接到storyboard文件中的相应对象。

您的应用可能正在崩溃,因为您的计时器为零,但是根据您的需要,您可以使用Timer类而不是WKInterfaceTimer。