我有一个函数可以根据NSUserDefaults
中的用户首选项将分钟转换为十进制或HH:MM字符串。
例如,90
分钟可以是1.5
或1:30
。
这是我的功能:
func decimalOrHHMM(value:Int) -> String{
let totalMinutes = Double(value)
let defaults = UserDefaults.standard
if defaults.string(forKey: "displayTotalsAs") == "hhmm"{
//HH:MM
let hours = floor(totalMinutes/60)
let minutes = totalMinutes.truncatingRemainder(dividingBy: 60) //This gives us the remainder
let hrs = String(format: "%.0f", hours) //Remove tenths place
var mins = ""
if minutes < 10{
//Prepend 0
mins = String(format: "0%.0f", minutes)
}else{
mins = String(format: "%.0f", minutes)
}
return "\(hrs):\(mins)"
}else{
//Decimal
return String(format: "%.1f", totalMinutes/60)
}
}
这很好用,但我想知道这是否可以某种方式转换为NSNumberFormatter
Swift扩展。我无法知道我需要覆盖什么才能进行所有转换。
我知道如何将其作为扩展吗?
答案 0 :(得分:0)
这是Swift扩展的基本结构,您可以使用函数而不是计算属性,但由于您的原始函数采用Int
值,因此计算属性是有意义的。
extension Int {
var decimalOrHHMM: String {
return "\(self)" // do your actual conversion here
}
}
您也可以选择延长NSNumberFormatter
。