大家好我在Swift做了一个简单的计时器。一切都远远超过当秒达到59秒而不是回到零时他们继续前进。有人能够指出我出错的地方以及为什么会这样吗?
这是我的代码: -
class ViewController: UIViewController {
var startTime = NSTimeInterval()
var timer = NSTimer()
var isRunning = false
func updateTime() {
var currentTime = NSDate.timeIntervalSinceReferenceDate()
var elapsedTime : NSTimeInterval = currentTime - startTime
//calculate the minutes in elapsed time
let minutes = UInt8(elapsedTime / 60.0)
elapsedTime - (NSTimeInterval(minutes) * 60)
//calculate the seconds in elapsed time
let seconds = UInt8(elapsedTime)
elapsedTime -= NSTimeInterval(seconds)
//fraction of milliseconds
let fraction = UInt8(elapsedTime * 100)
//add the leading zero for minutues, seconds and milliseconds, store
// as string constants
let strMinutes = minutes > 9 ? String(minutes): "0" + String(minutes)
let strSeconds = seconds > 9 ? String(seconds): "0" + String(seconds)
let strFraction = fraction > 9 ? String(fraction): "0" + String(fraction)
//concatonate mins, seoncds and milliseconds, assign to UILable timercount
TimerCount.text = "\(strMinutes):\(strSeconds):\(strFraction)"
}
@IBOutlet weak var TimerCount: UILabel!
@IBAction func StartButton(sender: AnyObject) {
if !timer.valid {
let aSelector : Selector = "updateTime"
timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)
startTime = NSDate.timeIntervalSinceReferenceDate()
}
}
@IBAction func StopButton(sender: AnyObject) {
timer.invalidate()
}
@IBAction func ResetButton(sender: AnyObject) {
timer.invalidate()
TimerCount.text = "00:00:00"
}
答案 0 :(得分:2)
你有一个简单的错字。
elapsedTime - (NSTimeInterval(minutes) * 60)
应该是:
elapsedTime -= (NSTimeInterval(minutes) * 60)