尝试? returns 双可选 Swift 4
try? returns double optional in 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
P.S。在 Swift 5 中,初始代码有效,但我需要在 Swift 4 中使用它(升级到 Swift 5 需要对项目进行重大更改)
自从 do - try - catch
错误处理在 Swift 3.
中引入以来,返回双精度可选值是默认行为
在Swift5SE 230: Flatten nested optionals resulting from 'try?'已经实现。
upgrading to Swift 5 requires significant changes in project
去做吧,值得。这些变化没有从 Swift 2 到 3
那么显着
有很多类似的问题,但没有人描述如何使用 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
P.S。在 Swift 5 中,初始代码有效,但我需要在 Swift 4 中使用它(升级到 Swift 5 需要对项目进行重大更改)
自从 do - try - catch
错误处理在 Swift 3.
在Swift5SE 230: Flatten nested optionals resulting from 'try?'已经实现。
upgrading to Swift 5 requires significant changes in project
去做吧,值得。这些变化没有从 Swift 2 到 3
那么显着