2017-04-25 118 views
1

我很難搞清楚如何將計算結果分配給一個變量,如您所見,它是一個可選項,並且在我嘗試爲其賦值時保持零。爲什麼我不能爲測量<UnitMass>變量賦值?

我最初試圖做一個直接的任務。 value財產如此:

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

但這並沒有工作。然後我決定我需要的分配過程中指定unit(基於當前用戶的默認單元上),所以我想這(這裏是完整的上下文):

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...* 
} 

我真的認爲這會工作,但仍,oneRepMax是零。

我已閱讀了Apple的文檔,甚至查看了一些Ray Wenderlich屏幕錄像,但還沒有找出答案。預先感謝您提供的任何幫助。

回答

2

更改此:

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

到:

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

如果oneRepMax是目前與nil值的可選值,則分配時不使用oneRepMax? = ...發生。

iOS/Swift: Can't assign optional String to UILabel text property的回答是相關的,並提供了更多的解釋。

+0

就在我以爲我有可選項計算出來......哦。謝謝! – Jim