2017-04-25 6 views
1

計算結果を変数に代入する方法がわかりません。fileprivate var oneRepMax: Measurement<UnitMass>?ご覧のとおり、オプションで、値を代入しようとするとnilのままです。なぜ測定値<UnitMass>に値を割り当てることができないのですか?

私はもともとに直接割り当てを試みました。そのようなvalueプロパティ:

oneRepMax?.value = liftWeight * (Double(repetitions) ^^ 0.10) 

しかし、それは動作しませんでした。私はその後、私はこれを試してみましたので、私は割り当て時(現在のユーザーのデフォルトの単位に基づく)unitを指定する必要が決定し(ここでは完全なコンテキストです):私は本当にそれが仕事だろうと思ったが、それでも、oneRepMaxがある

func calculateOneRepMax() -> Measurement<UnitMass> { 

let defaultWeightUnit = UserDefaults.weightUnit().unitName <-- returns "kg" 
let unit = UnitMass(symbol: defaultWeightUnit) <-- 'po unit' shows <NSUnitMass: 0x61000003ffa0> kg 
switch withFormula {   
    case "Lombardi": 
     let result = liftWeight * (Double(repetitions) ^^ 0.10) 
     oneRepMax? = Measurement(value: result, unit: unit) 
    *case next case...* 
} 

は、なし。

私はAppleのマニュアルを読んでいて、Ray Wenderlichのスクリーンキャストを見直しても、その答えは分かりません。あなたが提供できる任意のヘルプに事前に感謝します。

答えて

2

変更この:

oneRepMax? = Measurement(value: result, unit: unit) 

へ:

oneRepMax = Measurement(value: result, unit: unit) 

oneRepMaxnil値と現在値、オプションであれば、あなたがoneRepMax? = ...を使用する場合、代入は発生しません。

iOS/Swift: Can't assign optional String to UILabel text propertyへの回答は関連性があり、もう少し説明があります。

+0

ちょうど私が選択肢を見つけたと思ったときに...ああ。ありがとう! – Jim

関連する問題