现在我有一些代码如下:
let msg: String? = myStr.removingPercentEncoding ?? nil
print("msg \(msg!)")
我真的不喜欢在!
中使用msg!
因为这可能会引发异常,我相信。
如果myStr不是nil,然后在不抛出异常的情况下解包msg,那么调用myStr.removingPercentEncoding
的最佳方法是什么?
答案 0 :(得分:4)
正确的方法是:
if let msg = myStr.removingPercentEncoding {
print("msg \(msg)")
}
此处msg
仅在if
语句中有效且仅在myStr.removingPercentEncoding
不是nil
的情况下有效。
如果您希望在myStr.removingPercentEncoding
为nil
的情况下打印某些内容,那么您可以else
:
if let msg = myStr.removingPercentEncoding {
print("msg \(msg)")
} else {
print("msg has no value")
}
答案 1 :(得分:2)
当myStr.removingPercentEncoding
为nil
时,nil
(??
的右侧)被分配到msg
时,此行完全无效:
let msg: String? = myStr.removingPercentEncoding ?? nil
你为什么不这样做:
let msg: String = myStr.removingPercentEncoding ?? ""
print("msg \(msg)")