Swift 4:将 Bool 选项打印为未包装的 true 或 false 或包装的 nil?

ANo*_*tly 0 boolean optional swift swift4

基本上我想将以下值打印为“true”、“false”或“nil”。如果我尝试仅使用包装的值,我会得到我想要的“nil”,但会获得不需要的“Optional(true)”或“Optional(false)。如果我强制解开该值并且值为 nil,则会出现致命错误。我尝试了下面的代码,因为我已经看到它适用于字符串,但是因为“nil”不是 Bool 类型,所以它不被接受。有什么解决方案吗?

var isReal: Bool?
String("Value is \(isReal ?? "nil")")
Run Code Online (Sandbox Code Playgroud)

我正在导出到 csv 文件,了解此值是真还是假或尚未检查很有用。

Mar*_*n R 5

如果你想要一个单线:

var isReal: Bool?
let s = "Value is \(isReal.map { String($0) } ?? "nil")"
print(s) // "Value is nil"
Run Code Online (Sandbox Code Playgroud)

或者使用自定义扩展名:

extension Optional {
    var descriptionOrNil: String {
        return self.map { "\($0)" } ?? "nil"
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以做

var isReal: Bool?
let s = "Value is \(isReal.descriptionOrNil)"
print(s) // "Value is nil"
Run Code Online (Sandbox Code Playgroud)

这适用于所有可选类型。