In iOS 10, Apple introduced several components for quantifying measurements. For example:
let velocity = Measurement(value: 3, unit: UnitSpeed.metersPerSecon
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