1
측정 값과 형식을 두 개의 별도 문자열로 가져 오려고합니다. 이렇게하기 위해 아래 함수를 작성했습니다. 템플릿을 처리하기 위해 확장 기능의 형식을 고민하고 있습니다.형식화 된 값 및 단위를 측정에서 가져 오는 방법
func getFormattedValueAndUnitFromMeasurement(measurement: Measurement<Unit>)
다음 작품을하지만 그때 나는 각 단위 유형에 대한 함수를 정의해야합니다
이 작동하지 않습니다.
func getFormattedValueAndUnitFromMeasurement(measurement: Measurement<UnitLength>)
여기에 제가 사용하고있는 코드가 있습니다.
var diameter: Measurement<UnitLength> = Measurement<UnitLength>(value: 13, unit: .inches)
let diameterFormatter = MeasurementFormatter()
diameterFormatter.unitStyle = .medium
diameterFormatter.unitOptions = .providedUnit // .natural
diameterFormatter.numberFormatter.generatesDecimalNumbers = true
diameterFormatter.numberFormatter.maximumFractionDigits = 1
// Get the formatted text for the value and the units
let diameterText = diameterFormatter.getFormattedValueAndUnitFromMeasurement(measurement: diameter)
extension MeasurementFormatter {
func getFormattedValueAndUnitFromMeasurement(measurement: Measurement<Unit>) -> (valueString: String, unitString: String)
{
// Number Formatter
let numberFormatter = self.numberFormatter
// This assumes the number is going to be displayed in the provided units. Ok for now
let numberString = numberFormatter?.string(from: NSNumber (value: measurement.value))
// Figure out just the units of the string
var units: String = self.string(for: measurement)!
if (units.hasPrefix(numberString!)) {
units.removeSubrange((numberString?.startIndex)! ..< (numberString?.index((numberString?.startIndex)!, offsetBy: (numberString?.characters.count)!))!)
}
return (numberString!, units)
}
}