Swift 测量格式未按预期工作
用户输入为Swift 测量格式未按预期工作,swift,measurementformatter,Swift,Measurementformatter,用户输入为5 打印(计算值)的输出为5000.0g 但是,Convertedunit.text的输出为11.003lbs,单位为磅。我试着用不同的方法,但它仍然不是克。有人能告诉我吗?由于formatter.locale=locale(标识符:“en_US”),格式化程序将自动将所有内容转换为英制单位制,在本例中为磅。另一方面,克属于公制 有两种方法可以改变这种行为: A)如果要使用公制,请指定使用公制的国家/地区,如德国formatter.locale=locale(标识符:“de_de”)。
5
打印(计算值)
的输出为5000.0g
但是,
Convertedunit.text
的输出为11.003lbs
,单位为磅。我试着用不同的方法,但它仍然不是克。有人能告诉我吗?由于formatter.locale=locale(标识符:“en_US”)
,格式化程序将自动将所有内容转换为英制单位制,在本例中为磅。另一方面,克属于公制
有两种方法可以改变这种行为:
A)如果要使用公制,请指定使用公制的国家/地区,如德国formatter.locale=locale(标识符:“de_de”)
。别担心,这不会影响字符串的语言(例如德语:Meter、英语:Meters、法语:Mètres),因为这仍然绑定到应用程序语言
B)如果要保留放入格式化程序的任何单位,只需声明:formatter.unitOptions=.init(arrayLiteral:.providedUnit)
这样,格式化程序将使用您提供的任何单元生成字符串
let userDefined = Measurement(value: Double(userInput.text!)!, unit: UnitMass.kilograms)
let calculatedValue = userDefined.converted(to: UnitMass.grams)
print(calculatedValue)
let formatter = MeasurementFormatter()
formatter.locale = Locale(identifier: "en_US")
Convertedunit.text = formatter.string(from: calculatedValue)