Choosing units with MeasurementFormatter

前端 未结 2 1631
清酒与你
清酒与你 2020-12-03 15:49

This is similar to a question I asked yesterday but the answer I got doesn\'t seem to work in this case.

I\'m getting altitude values in meters from Core Location. I

2条回答
  •  忘掉有多难
    2020-12-03 15:59

    You just need to convert your UnitLength from meters to feet. You can also create a custom US measurement formatter to display it as needed:

    extension Measurement where UnitType == UnitLength {
        private static let usFormatted: MeasurementFormatter = {
           let formatter = MeasurementFormatter()
            formatter.locale = Locale(identifier: "en_US")
            formatter.unitOptions = .providedUnit
            formatter.numberFormatter.maximumFractionDigits = 0
            formatter.unitStyle = .long
            return formatter
        }()
        var usFormatted: String { Measurement.usFormatted.string(from: self) }
    }
    

    Playground

    let value: Double = 1839
    let meters: Measurement = .init(value: value, unit: .meters)
    let feet = meters.converted(to: .feet)
    let formatted = feet.usFormatted
    print(formatted)    // "6,033 feet"\n
    

提交回复
热议问题