Custom measurement unit

后端 未结 1 1802
情深已故
情深已故 2020-12-20 23:02

In iOS 10, Apple introduced several components for quantifying measurements. For example:

let velocity = Measurement(value: 3, unit: UnitSpeed.metersPerSecon         


        
相关标签:
1条回答
  • 2020-12-20 23:26

    Since the conversion is not linear, you will need to create your own UnitConverter subclass:

    class UnitConverterInverse: UnitConverter {
        var coefficient: Double
    
        init(coefficient: Double) {
            self.coefficient = coefficient
        }
    
        override func baseUnitValue(fromValue value: Double) -> Double {
            return coefficient / value
        }
    
        override func value(fromBaseUnitValue baseUnitValue: Double) -> Double {
            return coefficient / baseUnitValue
        }
    }
    
    extension UnitSpeed {
        static let minutesPerKilometer = UnitSpeed(symbol: "min/km",
            converter: UnitConverterInverse(coefficient: 1000.0 / 60.0))
    }
    
    let velocity = Measurement(value: 60, unit: UnitSpeed.milesPerHour)
    
    let velocity2 = velocity.converted(to: .minutesPerKilometer)
    
    print(velocity2)
    
    0.621371192237334 min/km
    
    0 讨论(0)
提交回复
热议问题