ho una sottoclasse NSManagedObject con un'istanza opzionale variabileAccesso BOOLVALUE in una var NSNumber con concatenamento opzionale (a Swift)
@NSManaged var condition: NSNumber? // This refers to a optional boolean value in the data model
mi piacerebbe fare qualcosa quando esiste la variabile di condizione e contiene 'vero' .
Certo, posso fare in questo modo:
if let cond = condition {
if cond.boolValue {
// do something
}
}
Tuttavia, ho sperato che sarebbe stato possibile fare la stessa cosa un po 'più compatto, con il concatenamento opzionale. Qualcosa di simile a questo:
if condition?.boolValue {
// do something
}
Ma questo produce un errore di compilazione:
Optional type '$T4??' cannot be used as a boolean; test for '!= nil' instead
Il modo più compatto per risolvere questo problema è stato questo:
if condition != nil && condition!.boolValue {
// do something
}
c'è davvero nessun modo per l'accesso il valore booleano con concatenamento opzionale o mi manca qualcosa qui?
'testNil == true' raise 'errore fatale: trovato inaspettatamente nil mentre scartando un valore Optional'. Quindi, dovresti scrivere in questo modo 'testNil? .boolValue == true', se non è bello. :( –
L'ho appena testato e funziona correttamente, nessuna eccezione generata È un optional, quindi non si verifica alcuna interruzione forzata, quindi mi chiedo come hai ottenuto l'errore È possibile che l'hai dichiarato come facoltativo da scartare facoltativo per errore? – Antonio
Oh , è un mio errore, questo errore viene generato con Opzionalmente invisibile come 'var testNil: NSNumber! = nil'. Mi dispiace per questo –