我认为,对于转换单位,NSLengthFormatter
只接受SI 单位长度,特别是“米”。
例如(在 Swift 中):
let formatter = NSLengthFormatter()
formatter.numberFormatter.locale = NSLocale(localeIdentifier: "en-US")
formatter.stringFromMeters(0.5)
结果"1.64 ft"
stringFromValue:unit:
是显示区域设置的“单位”字符串。
let formatter = NSLengthFormatter()
formatter.numberFormatter.locale = NSLocale(localeIdentifier: "fr-FR")
formatter.unitStyle = NSFormattingUnitStyle.Long
formatter.stringFromValue(12.0, unit: NSLengthFormatterUnit.Inch);
结果"12 pouces"
升级版:
我认为,这些新NSFormatter
的子类主要针对“HealthKit”框架。
实际上,HealthKit
具有单位转换功能。
在操场上试试这个:
import HealthKit
// input value
let foot = HKUnit.footUnit()
let footQuantity = HKQuantity(unit: foot, doubleValue: 1.23)
// to convert unit
let mm = HKUnit(fromString: "mm")
let mmVal = footQuantity.doubleValueForUnit(mm) // -> 374.904
let mmQuantity = HKQuantity(unit: mm, doubleValue: mmVal)
// coordinate with formatter
let formatter = NSLengthFormatter()
let mmFormat = HKUnit.lengthFormatterUnitFromUnit(mm)
formatter.numberFormatter.locale = NSLocale(localeIdentifier: "sl-SI")
formatter.stringFromValue(mmVal, unit: mmFormat) // -> "374,904 mm"