我在 Swift 中遇到 Nil Coalescing 问题
I am facing issue with Nil Coalescing in Swift
有没有办法在 Swift 中的 nil 合并运算符中不使用强制展开?
我尝试使用:
Int(errorCodeString?) ?? 500
但是,这没有用。
整体代码片段为:
var errorCodeString: String?
errorCodeString = "404"
let actualErrorCode = Int(errorCodeString!) ?? 500
print("Actual Error Code: \(actualErrorCode)")
当然可以。使用 nil coalescing operator
两次,一次打开 String?
,第二次打开 Int?
:
let actualErrorCode = Int(errorCodeString ?? "") ?? 500
解释:
您的 errorCodeString
是可选的 String
(又名 String?
)。执行 errorCodeString ?? ""
将展开 errorCodeString
(如果它不是 nil
)或将其替换为 ""
(如果它是 nil
)。
其结果被传递给 Int
初始化程序,后者采用 String
。 Int(_:String)
初始值设定项将 String
转换为包含整数值的 Int?
或 nil
如果 String
不代表有效的 Int
.如果值为 nil
.
,则第二个 nil 合并运算符 ??
解包 Int?
或将其替换为 500
您最初尝试的方法 Int(errorCodeString?) ?? 500
不起作用,因为在带有 ?
的可选项之后仅有条件地在 可选链 中解包它。在这种情况下,您必须在 ?
后跟成员访问、方法调用或索引运算符 []
.
Int
初始化器不接受可选值。
您的 Int(errorCodeString?) ?? 500
在句法上不正确。请改用 Int(errorCodeString ?? "") ?? 500
。
有没有办法在 Swift 中的 nil 合并运算符中不使用强制展开?
我尝试使用:
Int(errorCodeString?) ?? 500
但是,这没有用。
整体代码片段为:
var errorCodeString: String?
errorCodeString = "404"
let actualErrorCode = Int(errorCodeString!) ?? 500
print("Actual Error Code: \(actualErrorCode)")
当然可以。使用 nil coalescing operator
两次,一次打开 String?
,第二次打开 Int?
:
let actualErrorCode = Int(errorCodeString ?? "") ?? 500
解释:
您的 errorCodeString
是可选的 String
(又名 String?
)。执行 errorCodeString ?? ""
将展开 errorCodeString
(如果它不是 nil
)或将其替换为 ""
(如果它是 nil
)。
其结果被传递给 Int
初始化程序,后者采用 String
。 Int(_:String)
初始值设定项将 String
转换为包含整数值的 Int?
或 nil
如果 String
不代表有效的 Int
.如果值为 nil
.
??
解包 Int?
或将其替换为 500
您最初尝试的方法 Int(errorCodeString?) ?? 500
不起作用,因为在带有 ?
的可选项之后仅有条件地在 可选链 中解包它。在这种情况下,您必须在 ?
后跟成员访问、方法调用或索引运算符 []
.
Int
初始化器不接受可选值。
您的 Int(errorCodeString?) ?? 500
在句法上不正确。请改用 Int(errorCodeString ?? "") ?? 500
。