具有混合类型的 Nil 合并运算符

Nil Coalescing Operator with mixed types

是否有任何简洁快捷的方法来获取非字符串类型的可选值并获取字符串值,如果是 .some() 则为该值的字符串解释,如果为 .some() 则为某个默认值.none() 除了以下内容:

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

对于一个相对简单的事情来说,它似乎非常冗长,而且我感觉好像遗漏了一些明显的东西。

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

你可以这样写:

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

或者,如果您想使用某些没有 属性 description 的类型:

let statusCodeString = statusCode.map{String(describing: [=11=])} ?? "None"