混合类型的Nil合并运算符

Cog*_*tio 0 null default-value null-coalescing-operator optional swift

是否有任何简便的快速简便方法可以获取非String类型的可选值,并获取String值,如果它是.some(),则为该值的String解释;如果它是.none(),则为默认值下列:

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

对于一个相对简单的事情来说,它似乎太冗长了,感觉就像我缺少明显的东西。

仅使用nil-coalescing运算符不起作用,因为您必须提供相同类型的默认值。

OOP*_*Per 5

您可以这样写:

let statusCodeString = statusCode?.description ?? "None"
Run Code Online (Sandbox Code Playgroud)

或者,如果您要使用某些不具有属性的类型,请执行以下操作description

let statusCodeString = statusCode.map{String(describing: $0)} ?? "None"
Run Code Online (Sandbox Code Playgroud)