2016-09-28 3 views
0

Ich habe eine Menge Code in meinem Projekt dieser Art:Binäre Operatoren mit optionals in Swift 3

let hasQuestionsRemaining = user.numberOfCredits > 0.0 

wo numberOfCredits ist ein Double?. So bekomme ich den Fehler: Binary operator '>' cannot be applied to operands of type 'Double?' and 'Double'.

So, jetzt benutze ich:

var hasQuestionsRemaining = false 
if let numberOfCredits = user.numberOfCredits, numberOfCredits > 0.0 { 
    hasQuestionsRemaining = true 
} 

Gibt es eine effizientere Art und Weise, dies zu tun?

+4

Vergleichen http://stackoverflow.com/questions/39427650/swift3-optional-chaining-in-if-conditions-bug. –

+0

'lass hasQuestionsRemaining = user.numberOfCredits! > 0.0' –

+0

@ ÖzgürErsil Nr. Sicher nicht gewaltsam auspacken. – Alexander

Antwort

0

In Swift 2.2 konnten Sie optionale und nicht optionale Typen direkt vergleichen, aber dieses Verhalten wurde in Swift 3.0 entfernt. Sie können mehr darüber in proposal SE-0121.

lesen

Swift 3.0 überlässt es den Entwicklern, ihre Optionen in einer Weise zu behandeln, die ihre Anwendung am meisten schätzen. In Ihrem Fall scheint dies der Weg zu gehen:

let hasQuestionsRemaining = user.numberOfCredits ?? 0.0 > 0.0 

Es nil Werte als 0.0 für Vergleichszwecke zu 0.0 behandeln werde.

Verwandte Themen