0

私は健康上のアプリを作り、HKUnitを拡張することで、いくつかのデータを表現するためにいくつかのカスタムHKUnitを作成するにはいいだろうと思ったが、HealthKitのドキュメントでは、我々はそれを拡張したりサブクラスべきではないと言うので、私は測定値(寸法)に行ってきましたよカスタムユニットを作成しようとします。測定ユニットを既存のタイプで拡張する最良の方法は?

基本的に、カスタム作成部は、一般に基本単位型(unitduration、長さ、質量、エネルギー、等)と係数(変換器)を使用することを意味します。 しかし、このユニットと互換性のあるタイプがない場合はどうですか?

例:BMI単位(kg/m^2または同等)とBMR(Kcal /日)などを作成します。 したがって、bmi、bmrなどのクラス変数を持つMetabolicUnitクラスユニットについては、訳注:dividedByとmultipliedByを使って自動的に翻訳単位を取得してください。

アドバイス、良い方法、または既に解決済みのコードはありますか? あまりにも一般的な名前のかなり新しいフレームワークなので、意味のあるものを見つけるのは難しいです。 おかげ

+0

'(と:.kilo)BMI = HKUnit.gramUnitを聞かせて作ると間違って何(で:HKUnit.meter()).unitDivided。 unitDivided(by:HKUnit.meter()) '? – Sulthan

+0

ありがとう、私はすでにそれを試しましたが、システムフレームワークを拡張するのではなく、ローカルのHKUnitだけを提供します。私は、測定/ユニットを拡張して、フリーの翻訳(フォーマッタ)とkg/m2とlb/in^2の間で移動するための因子を得ることも考えていました。しかし、カスタム測定/ユニット**それはそれは私が行ったように私はすでに少し違ったとはいえ(試みた何かちょうど質量、長さ、スピード、エネルギーなど – Einharch

答えて

1

あなたは、サブクラス化やHKUnitを延長せずにBMIを表しHKUnitのインスタンスを作成することができます。ここではどのように2つの例は以下のとおりです。

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(で:)_ **部門の内部が、同じ結果)。 私はまだ測定/ユニット**のスペースでそれをやろうとしていますが、それはメトリックや帝国のシステムか完全なものかをチェックすることなく、異なる言語。 – Einharch

関連する問題