2017-03-31 72 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