-2

现在我有一些如下所示的代码:

let msg: String? = myStr.removingPercentEncoding ?? nil

print("msg \(msg!)")

我真的不喜欢使用!inmsg!因为这可能会引发异常,我相信。

myStr.removingPercentEncoding如果 myStr 不是 nil 然后解开 msg 而不抛出异常,最好的调用方法是什么?

4

2 回答 2

4

正确的方法是:

if let msg = myStr.removingPercentEncoding {
    print("msg \(msg)")
}

在这里,msg仅在if语句内部有效且仅在myStr.removingPercentEncodingis not时有效nil

如果你想打印一些东西 if myStr.removingPercentEncodingis nil,那么你可以和一个else

if let msg = myStr.removingPercentEncoding {
    print("msg \(msg)")
} else {
    print("msg has no value")
}

阅读The Swift Programming Language一书中的可选绑定。

于 2017-01-04T16:58:20.667 回答
2

这条线完全没用,当myStr.removingPercentEncodingis时nilnil(右侧??)被分配给msg

let msg: String? = myStr.removingPercentEncoding ?? nil

你为什么不把它变成:

let msg: String = myStr.removingPercentEncoding ?? ""

print("msg \(msg)")
于 2017-01-04T17:01:09.183 回答