2017-03-19 29 views
0

Ich versuche, einen Wert und auszupacken, wenn es funktioniert, vergleichen Sie es größer als 0Swift 3 auspacken und vergleichen int, wenn

Ich mache die folgende Art und Weise:

if let movieLength = movie.length as? Int, movieLength > 0 { 
    self.durationLabel.text = "\(movieLength) min" 
} else { 
    self.durationLabel.isHidden = true 
} 

aber ich habe den Fehler

Downcast from 'Int?' to 'Int' only unwraps optionals; did you mean to use '!'?

auch das where Stichwort versucht, mit aber keinen Erfolg:

if let movieLength = movie.length as? Int where movieLength > 0 { 
    self.durationLabel.text = "\(movieLength) min" 
} else { 
    self.durationLabel.isHidden = true 
} 

mit dem Fehler:

Expected ',' joining parts of a multi-clause condition

Was ich oben gerade versucht.

Antwort

3

Keine Notwendigkeit, in if let explizit auspacken, sollten nur diese

if let movieLength = movie.length, movieLength > 0 { 
    self.durationLabel.text = "\(movieLength) min" 
} else { 
    self.durationLabel.isHidden = true 
} 

Sie arbeiten, um die "Optional Bindung" in The Basics für richtige Syntax kann überprüfen.

+0

Das war dumm von mir ... Ich habe versucht, wenn movieLength = movie.length wo movieLength> 0 ', aber nicht mit einem Komma anstelle von wo. Vielen Dank! –