2014-11-12 16 views

risposta

56

Non è possibile assegnare il valore stringa per bool ma è possibile controllare che str1 è nullo o non piace questo modo:

myBool = str1 != nil ? true : false 
print(myBool) 

stamperà falso perché str1 è vuoto.

+4

Non è necessaria l'espressione condizionale, basta fare: 'myBool = str1! = Nil' – TimK

+1

Penso che il condizionale fosse mostrare la sintassi – jarryd

48

Nil Coalescing Operator può essere utilizzato anche. Il seguente codice utilizza l'operatore condizionale ternario e forzato scartare (una!) Per accedere al valore avvolto all'interno di un quando non è nullo, e di ritornare b altrimenti

normale ternario Operatore

:

output = a != nil ? a! : b Apple Developer Link: si prega di fare riferimento al Demo Link

In Swift 1.2 & 2, sopra riga di codice è sostituito da un formato più breve:

output = a ?? b 

Demo Link: L'operatore coalescente nullo (a ?? b) scartare un facoltativo a se contiene un valore o restituisce un valore predefinito b se a è zero.

1

Questo funziona anche bene se il valore che si desidera è una proprietà o il risultato di una chiamata di funzione su un optional (a Swift 3.0):

return peripheral?.connected ?? false 
+0

che non risponde alla stessa domanda, perché si presume che vogliamo il valore - se esiste, e nullo altrimenti. Mentre vogliamo due espressioni diverse - basate su condizionali arbitrari. qualcosa come un> 3? (4 + 7): (6/4) in C. –

0

Nel caso in cui il confronto si basa su alcune condizioni

let sliderValue = Float(self.preferenceData.getLocationRadius().characters.count > 1 ?self.preferenceData.getLocationRadius():"0.1") 

Qui la funzione getLocationRadius() restituisce una stringa. Un'altra cosa se non mettiamo uno spazio tra 1 e? si traduce in un errore di sintassi

0

Ternary operators operate on three targets. Like C, Swift has only one ternary operator, the ternary conditional operator (a ? b : c).

Esempio di utilizzo su tableView -

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return section == 2 ? 4 : 1 
} 

indica se sezione uguale a 2, allora ritorno 4 altrimenti 1 su false.

Problemi correlati