我无法使新的MeasurementFormatter
类以适当的单位给出结果。我希望以本地化字符串(米或英尺)显示的米数值,具体取决于用户的区域设置。使用MeasurementFormatter以英尺显示仪表
我有这样的:
let meters : Double = 10
let metersMeasurement = Measurement(value: meters, unit: UnitLength.meters)
let measurementFormatter = MeasurementFormatter()
measurementFormatter.locale = Locale(identifier: "en_US")
let localizedString = measurementFormatter.string(from: metersMeasurement)
这给了我 “0.006mi” 的字符串。我想,这是正确的,但将10米转换为英里有点荒谬。我想要的是“32.8英尺”。
MeasurementFormatter
上的.providedUnit
选项没有帮助 - 这只会给我一个以米为单位的结果。
我可以查看当前的语言环境并自己处理,但这正是MeasurementFormatter
应该不必要的那种类型。有什么办法让它做我需要的吗?
在您的单元格式化程序中设置'naturalScale'选项https://developer.apple.com/reference/foundation/measurementformatter.unitoptions/1642065-naturalscale – Paulw11
除了naturalScale,您需要将数字格式化程序的最大数字设置为1'measurementFormatter .numberFormatter.maximumFractionDigits = 1' –
@LeoDabus这将是可选的。 – rmaddy