2016-10-04 2 views
0

이것은 question I asked yesterday과 비슷하지만,이 경우 나는 대답하지 않습니다.MeasurementFormatter로 단위 선택하기

코어 위치에서 미터로 고도 값을 얻습니다. 나는 이것들을 지역화 된 형태로 보여주고 싶다. 예를 들어, 지금 내가있는 고도는 해발 1839m입니다. 이 값은 6033 피트로 표시되어야합니다. MeasurementFormatter으로 할 수있는 최선은 "1.143 mi"입니다.

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) 

이전 질문에 대한 답변이 여기에 도움이되지 않습니다. 나는 이것이 프레임 워크의 한계라고 생각하지만, 지금 누군가를위한 해결 방법이 있는지 궁금해.

답변

1

미터 단위를 피트 단위로 변환하려면 Double 확장을 만듭니다. 필요에 따라 그럼 그냥 표시 할 MeasurementFormatter를 사용

let measurementFormatter = MeasurementFormatter() 
measurementFormatter.locale = Locale(identifier: "en_US") 
measurementFormatter.unitOptions = .providedUnit 
measurementFormatter.numberFormatter.maximumFractionDigits = 0 
measurementFormatter.unitStyle = .long 

let meters: Double = 1839 
let localizedString = measurementFormatter.string(from: Measurement(value: meters.metersToFeet, unit: UnitLength.feet)) 

localizedString // // "6,033 feet" 

extension Double { 
    var metersToFeet: Double { 
     return Measurement(value: self, unit: UnitLength.meters).converted(to: UnitLength.feet).value 
    } 
} 

놀이터

2

나는이 컨텍스트를 지정할 방법이 없다고 생각합니다.

문화적으로 고도를 측정하는 다른 방법이있을 수 있지만 마일과 킬로미터보다 좋을 것 같습니다.