Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 测量格式未按预期工作_Swift_Measurementformatter - Fatal编程技术网

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)