0

Existe-t-il une bonne manière concise de prendre un optionnel de type non-String et d'obtenir une valeur String qui est soit l'interprétation String de cette valeur si elle est .some() ou une valeur par défaut valeur si elle est .NONE() en plus les éléments suivants:Opérateur de coalescence Nil avec types mixtes

let statusCode = (resp as? HTTPURLResponse)?.statusCode 
let statusCodeString: String 
if let statusCode = statusCode { 
    statusCodeString = "\(statusCode)" 
} else { 
    statusCodeString = "None" 
} 

il semble juste terriblement bavard pour une chose relativement simple, et il se sent comme si je manque quelque chose évidente. L'utilisation de l'opérateur nil-coalescing ne fonctionne pas car vous devez fournir une valeur par défaut du même type.

Répondre

4

Vous pouvez écrire quelque chose comme ceci:

let statusCodeString = statusCode?.description ?? "None" 

Ou si vous voulez travailler avec certains types qui ne sont pas la propriété description:

let statusCodeString = statusCode.map{String(describing: $0)} ?? "None" 
+0

qui le fait, en particulier l'utilisation générale Cas. Merci! – Cognitio

+0

'.map {Chaîne (décrivant: $ 0)}' s'écrit plus simplement '.map (String.init (décrivant :))' – Alexander

+0

@Alexander, merci. Mais c'est ma préférence et la mienne est deux caractères de moins que la tienne. – OOPer