Formatear la label del timer a horas: minutos: segundos en Swift

Tengo un NSTimer que count ABAJO desde 2 horas hasta 0.

Aquí hay algunos de mi código:

var timer = NSTimer() let timeInterval:NSTimeInterval = 0.5 let timerEnd:NSTimeInterval = 0.0 var timeCount:NSTimeInterval = 7200.0 // seconds or 2 hours // TimeString Function func timeString(time:NSTimeInterval) -> String { let minutes = Int(time) / 60 let seconds = time - Double(minutes) * 60 let secondsFraction = seconds - Double(Int(seconds)) return String(format:"%02i:%02i.%01i",minutes,Int(seconds),Int(secondsFraction * 10.0)) } 

La label del timer es:

 TimerLabel.text = "Time: \(timeString(timeCount))" 

SIN EMBARGO, mi label del timer muestra como:

 Time: 200:59.0 

¿Cómo formatting la label del timer para que se vea así?

 Time: 01:59:59 // (which is hours:minutes:seconds)? 

[Tenga en count que no tengo problemas con mi timer de count regresiva, solo necesito saber cómo CAMBIAR EL FORMATO DE TIEMPO utilizando la function TimeString.]

EDIT: Alguien mencionó que mi pregunta es un posible duplicado de este: Swift – iOS – Fechas y horas en diferente formatting . SIN EMBARGO, me pregunto cómo puedo cambiar el formatting de hora utilizando la function TimeString que di anteriormente. No estoy pidiendo otra MANERA sobre cómo hacerlo.

Por ejemplo:

 let minutes = Int(time) / 60 

me da "200" minutos. etc

Tus cálculos están mal.

 let hours = Int(time) / 3600 let minutes = Int(time) / 60 % 60 let seconds = Int(time) % 60 return String(format:"%02i:%02i:%02i", hours, minutes, seconds) 

La solución de @maddy es precisa y responde a la pregunta. Sin embargo, ni la pregunta ni la solución tienen en count a los usuarios internacionales. Sugiero usar DateComponentsFormatter y dejar que el marco maneje los cálculos y el formatting. Hacerlo hace que su código sea less propenso a errores y más testings futuras.

Encontré esta publicación de blog que ofrece una solución concisa: http://crunchybagel.com/formatting-a-duration-with-nsdatecomponentsformatter/

Tirado de esa publicación, este es el fragment de código que replaceía el código que está usando actualmente para hacer sus cálculos. Actualizado para Swift 3:

 let duration: TimeInterval = 7200.0 let formatter = DateComponentsFormatter() formatter.unitsStyle = .positional // Use the appropriate positioning for the current locale formatter.allowedUnits = [ .hour, .minute, .second ] // Units to display in the formatted string formatter.zeroFormattingBehavior = [ .pad ] // Pad with zeroes where appropriate for the locale let formattedDuration = formatter.string(from: duration)