iOS 응용 (swift)
[iOS - swift] Measurement, MeasurementFormatter 개념 (#단위 변환, cm, m)
jake-kim
2023. 10. 5. 01:01
Measurement 개념
- 1, 2, 3과 같은 숫자에 cm, m 같은 문자열도 같이 붙여서 관리해주는 struct 형태의 Unit

ex) 1이라는 meter 단위의 숫자가 있을 때, 이것을 cm 단위로 바꾼 후, 뒤에 "cm"를 붙여서 "100 cm"로 만들고 싶은 경우?
- 보통은 Int, Double Extension으로 계산식을 넣어서 사용하지만 Measurement를 사용하면 이것들을 모두 지원해주기 때문에 단위 변환이나 "cm"와 같은 이름을 붙이기가 유용
MeasurementFormatter 개념
- Measurement로 인스턴스를 만든 후 이 값에 특정 "cm"와 같은 이름을 붙여서 하나의 문자열로 만들 수 있는 포멧터

Measurement로 5 숫자를 500cm로 변환하기
- meter를 나타내는 Measurement 인스턴스를 생성 & cm단위로 변환
let lengthInMeters = Measurement(value: 5, unit: UnitLength.meters)
let lengthInCentimeters = lengthInMeters.converted(to: .centimeters)
- MeasurementFormatter를 사용하여 길이를 문자열로 포멧팅
let formatter = MeasurementFormatter()
formatter.unitOptions = .providedUnit
formatter.numberFormatter.maximumFractionDigits = 2
- formatter 메소드인 string(from:)을 사용하여 "cm"달아주기
@available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
extension MeasurementFormatter {
public func string<UnitType>(from measurement: Measurement<UnitType>) -> String where UnitType : Unit
}
적용 완료)
let formattedLength = formatter.string(from: lengthInCentimeters)
print("길이: " + formattedLength) // 길이: 500 cm
* 전체 코드: https://github.com/JK0369/ExMeasurementFormatter
* 참고
https://developer.apple.com/documentation/foundation/measurementformatter
https://developer.apple.com/documentation/foundation/measurement