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)
用户输入为5
。
print(calculatedValue)
的输出为5000.0g
。
但是,Convertedunit.text
的输出为11.003lbs
,以磅为单位。我尝试使用不同的方法,但它仍然不是克。谁能开导我?
答案 0 :(得分:0)
由于formatter.locale = Locale(identifier: "en_US")
,格式化程序将自动将所有内容转换为英制单位制,在这种情况下为磅。另一方面,克属于公制。
有两种方法可以更改此行为:
A)如果要使用公制,请为使用公制的国家/地区指定语言环境。 formatter.locale = Locale(identifier: "de_DE")
。不用担心,这不会影响字符串的语言(例如德语:Meter,英语:Meters,法语:Mètres),因为它仍然与应用程序语言绑定。
B)如果要保留放入格式化程序中的任何单位,只需声明:formatter.unitOptions = .init(arrayLiteral: .providedUnit)
这样,格式化程序将使用您提供的任何单位生成字符串。