2017-01-16 60 views
0

我正在製作一個健康應用程序,並認爲可以通過擴展HKUnit來創建一些自定義HKUnit來表示一些數據,但HealthKit文檔說我們不應該擴展或繼承它,所以我去測量(Dimension)嘗試創建自定義單元。使用非現有類型擴展測量單位的最佳方法?

基本上,創建自定義單位通常意味着使用基本單位類型(單位,長度,質量,能量等)和係數(轉換器)。 但是,如果沒有與本機兼容的類型,怎麼樣?

例如:我想創建一個BMI單位(kg /平方公尺或相當於)和BMR(千卡/天)等。 所以也許是一個MetabolicUnit類,其中包含類變量如bmi,bmr等。 。對於unit,希望使用dividedBy和multipliedBy來自動獲取已翻譯的單位。

任何建議,良好的做法或已經解決的代碼? 作爲一個名字太常見的新框架,很難找到有意義的東西。 謝謝

+0

出了什麼問題創造'讓BMI = HKUnit.gramUnit(附:.kilo).unitDivided(按:HKUnit.meter())。 unitDivided(by:HKUnit.meter())'? – Sulthan

+0

謝謝,我已經試過了,但它只給我一個本地HKUnit,不像擴展系統框架。我正在考慮擴展測量/單位以獲得免費翻譯(格式化程序)和在千克/平方米和磅/平方英寸等之間移動的因素等......但仍然有點不確定如何製作**自定義測量/單位**,不只是質量,長度,速度,能量等 – Einharch

回答

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) 
+0

謝謝, 這是我已經嘗試過的東西(雖然有點不同,因爲我在分區內** _ unitMultiplied(by:)_ **,但同樣結果)。 我仍然試圖在** Measurement/Unit **空間中做這件事,原因很少,主要是當我顯示給用戶時的免費翻譯,而不必檢查它們是公制還是英制系統還是完整的不同的語言。 – Einharch

相關問題