使用非现有类型扩展测量单位的最佳方法?

时间:2017-01-16 18:34:49

标签: swift swift3 health-kit measurement nsmeasurementformatter

我正在创建一个健康应用程序,并认为通过扩展HKUnit创建一些自定义HKUnit以表示一些数据会很好,但HealthKit文档说我们不应该扩展或子类化它,所以我去了测量(尺寸)以尝试创建自定义单位。

基本上,创建自定义单位通常意味着使用基本单位类型(单位换算,长度,质量,能量等)和系数(转换器)。 但是当没有与这个单位兼容的类型时呢?

示例:我想创建BMI单位(kg / m ^ 2或等值)和BMR(Kcal /天)等。 所以也许是一个带有类变量的MetabolicUnit类,比如bmi,bmr等......至于单位,希望使用divideBy和multipliedBy来自动获得翻译单位。

任何建议,良好做法或已经解决的代码? 作为一个具有太常见名称的相当新的框架,很难找到任何有意义的东西。 感谢

1 个答案:

答案 0 :(得分:1)

您可以创建一个代表BMI的HKUnit实例,而无需继承或扩展HKUnit。以下是两个示例:

let bmiUnit = HKUnit(from: "kg/m^2")

或者

let meter = HKUnit.meter()
let bmiUnit = HKUnit.gramUnit(with: .kilo).unitDivided(by: meter).unitDivided(by: meter)