0

String以外の型のオプションをとり、.some()または何らかのデフォルトの場合にその値のString解釈のString値を取得する、簡潔で賢明な方法はありますか値それは.none()である場合は、次のほかに:Nil Coalescing Operator with mixed types

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

ただ、比較的単純なことのためにひどく冗長ようだ、と私は何かを明らかに欠けているようにそれは感じています。

同じ種類のデフォルト値を指定する必要があるため、nil-coalescing演算子を使用するだけでは機能しません。

答えて

4

あなたはこのようないくつかのこと書くことができます。

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

それとも、プロパティdescriptionを持っていないいくつかの種類の仕事をしたい場合:

それをしない
let statusCodeString = statusCode.map{String(describing: $0)} ?? "None" 
+0

、特に一般的な使用を場合。ありがとう! – Cognitio

+0

'.map {String(describe:$ 0)}'は '.map(String.init(descriptions :))'と書かれています。 – Alexander

+0

@Alexander、ありがとう。しかし、それは私の好みであり、私のものはあなたのものより2文字少ないです。 – OOPer