2017-03-31 28 views
0

是否有任何簡潔快速的方法來取非String類型的可選項並獲取一個字符串值,該值可以是該值的字符串解釋(如果是.some()或某個缺省值值,如果它是.none()除下列內容:混合類型的無合併操作符

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(描述:$ 0)}'更簡單地寫成'.map(String.init(描述:))' – Alexander

+0

@亞歷山大,謝謝。但這是我的偏好,我的兩個字符比你的要少。 – OOPer