我一直在玩,MeasurementFormatter试图显示英制10"6'或10 ft 6 in不成功的长度.设置LengthFormatter为时会正确执行此操作,但它不能很好地适应用户的区域设置(即,以度量为单位测量长度的国家/地区除外,指的是高度).有没有办法在格式化程序中强制执行此行为?isForPersonHeightUsetrue
编辑 此问题是确定如何选择测量单位.我可以选择英尺或英寸,但希望显示小数英尺,如:6'3"而不是6.25英尺.
我有一个Measurement属性:
let measurement = Measurement(value: 10000.0, unit: UnitMass.grams)
Run Code Online (Sandbox Code Playgroud)
我想打印为字符串。我使用以下内容MeasurementFormatter:
let measurementFormatter = MeasurementFormatter()
measurementFormatter.unitStyle = .short
measurementFormatter.numberFormatter.numberStyle = .decimal
print(measurementFormatter.string(from: measurement))
Run Code Online (Sandbox Code Playgroud)
打印10,000g.
我怎样才能打印它10,000 g,即在值和单位之间有一个空格?
我正在尝试获取使用测量格式化程序获得的任何测量的本地化单位符号。
\n\n例如,如果区域设置使用华氏度,但应用程序以摄氏度存储其数据,我将创建一个测量格式化程序,如下所示:
\n\nlet formatter = MeasurementFormatter()\nlet measurement = Measurement(value: 10, unit: UnitTemperature.celsius)\nformatter.string(from: measurement)\nRun Code Online (Sandbox Code Playgroud)\n\n最后一行将为我提供“50\xc2\xb0F”。\n现在我想从测量中获取“\xc2\xb0F”值。
\n\n我尝试过使用
\n\nformatter.string(from: measurement.unit)\nRun Code Online (Sandbox Code Playgroud)\n\n但这只给了我“摄氏度”
\n\n提前致谢!
\n这类似于我昨天提出的问题,但我得到的答案在这种情况下似乎不起作用.
我从Core Location获得了以米为单位的海拔高度值.我想以本地化的形式显示这些内容.举个例子,我现在的海拔高度是海拔1839米.这应该显示为6033英尺.我能做的最好的MeasurementFormatter是"1.143英里".
let meters : Double = 1839
let metersMeasurement = Measurement(value: meters, unit: UnitLength.meters)
let measurementFormatter = MeasurementFormatter()
measurementFormatter.locale = Locale(identifier: "en_US")
let localizedString = measurementFormatter.string(from: metersMeasurement)
Run Code Online (Sandbox Code Playgroud)
.naturalScale回答我之前的问题的选项在这里没有帮助.我认为这是框架的限制,但我想知道是否有人现在有一个解决方法.