2017-04-25 3 views
1

J'ai du mal à trouver comment affecter le résultat d'un calcul à une variable, fileprivate var oneRepMax: Measurement<UnitMass>? Comme vous pouvez le voir, c'est un optionnel et il reste simplement nul après que j'essaie de lui assigner une valeur. J'ai essayé à l'origine de faire une affectation directe à la. value propriété comme ceci:Pourquoi ne puis-je pas affecter une valeur à une variable de mesure <UnitMass>?

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

mais cela ne fonctionne pas. Je me suis alors décidé que je dois spécifier le unit (en fonction de l'unité par défaut de l'utilisateur actuel) pendant l'affectation alors j'ai essayé ce (voici le contexte complet):

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

Je pensais vraiment que ça marcherait, mais encore, oneRepMax est néant. J'ai lu la documentation d'Apple et j'ai même passé en revue des screencasts de Ray Wenderlich, mais je n'ai pas compris cette réponse. Merci d'avance pour toute aide que vous pouvez fournir.

Répondre

2

Modifier ceci:

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

à:

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

Si oneRepMax est une valeur facultative actuellement avec une valeur nil, l'affectation ne se produit pas lorsque vous utilisez oneRepMax? = ....

La réponse à iOS/Swift: Can't assign optional String to UILabel text property est liée et fournit un peu plus d'explications.

+0

Juste au moment où je pensais avoir des options ... Eh bien. Merci! – Jim