我有一个函数,可以根据 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 扩展。我无法知道需要覆盖什么才能完成所有转换。
知道如何将其作为扩展吗?
最佳答案
这是 Swift 扩展的基本结构,您可以使用函数而不是计算属性,但由于原始函数采用 Int
值,因此计算属性是有意义的。
extension Int {
var decimalOrHHMM: String {
return "\(self)" // do your actual conversion here
}
}
您还可以选择扩展NSNumberFormatter
。
关于swift - 将时间转换函数更改为 Swift 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40520194/