如何解决尝试?在 Swift 4 中返回双可选
类似的问题有很多,但没有人描述如何使用 try?
+ double optional 处理异常。
我知道 str1 不会产生异常。这只是一个例子:
let str1: String? = "some string"
let str2: String? = try? str1 //compilation error because "try? str1" returns object of type String??
一种可能的解决方案是替换 try?
-> try
:
let str1: String? = "some string"
let str2: String? = {
do {
return try str1
} catch {
return nil
}
}()
但是可以像下面这样保留 try?
吗?
let str2: String? = try? ...//do something with str1 in the same single line
附言在 Swift 5 中,初始代码有效,但我需要在 Swift 4 中使用它(升级到 Swift 5 需要对项目进行重大更改)
解决方法
返回双可选是默认行为,因为使用 do - try - catch
进行错误处理是在 Swift 3 中引入的。
在 Swift 5 中 SE 230: Flatten nested optionals resulting from 'try?' 已实现。
升级到 Swift 5 需要对项目进行重大更改
做吧,值得。变化不如 Swift 2 到 3 剧烈
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。