Dato un Bool?
, mi piacerebbe essere in grado di fare questo:Come convertire Swift Bool? -> String?
let a = BoolToString(optbool) ?? "<None>"
che o mi "true"
, "false"
o "<None>"
dare.
C'è un built-in per BoolToString
?
Dato un Bool?
, mi piacerebbe essere in grado di fare questo:Come convertire Swift Bool? -> String?
let a = BoolToString(optbool) ?? "<None>"
che o mi "true"
, "false"
o "<None>"
dare.
C'è un built-in per BoolToString
?
let b1: Bool? = true
let b2: Bool? = false
let b3: Bool? = nil
print(b1?.description ?? "none") // "true"
print(b2?.description ?? "none") // "false"
print(b3?.description ?? "none") // "none"
o è possibile definire 'uno di linea', che funziona sia con Bool e Bool? come funzione
func BoolToString(b: Bool?)->String { return b?.description ?? "<None>"}
Cambia '" none "' a '"
meglio trovo un modo semplice per usare una fodera per entrambi Bool? e valori Bool ... – user3441734
var boolValue: Bool? = nil
var stringValue = "\(boolValue)" // can be either "true", "false", or "nil"
O una funzione personalizzata più prolisso:
func boolToString(value: Bool?) -> String {
if let value = value {
return "\(value)"
}
else {
return "<None>"
// or you may return nil here. The return type would have to be String? in that case.
}
}
Quindi no? Non esiste un modo integrato? – Ana
@Ana, c'è, una specie di. Vedi la mia modifica! – Macondo2Seattle
è possibile utilizzare il ?:
operatore ternario:
let a = optBool == nil ? "<None>" : "\(optBool!)"
Oppure si potrebbe usare map
:
let a = optBool.map { "\($0)" } ?? "<None>"
Dei due, optBool.map { "\($0)" }
fa esattamente ciò che si desidera BoolToString
da eseguire; restituisce un String?
ovvero Optional(true)
, Optional(false)
o nil
. Quindi l'operatore coalescente nil??
scartala o sostituisce nil
con "<None>"
.
Aggiornamento:
Questo può anche essere scritta come:
let a = optBool.map(String.init) ?? "<None>"
o:
let a = optBool.map { String($0) } ?? "<None>"
Stringa (Bool) è il modo più semplice.
var myBool = true
var boolAsString = String(myBool)
let someString = String(true) //"true"
let trueBool = Bool("true") //true
let falseBool = Bool("false") //false
let nilBool = Bool("foo") //nil
E si vorrebbe i veri, falsi, e ad essere stringhe? –
dannybess
@dannybess Spiacente, ci siamo persi. Sì. – Ana