我在Swift中面临Nil Coalescing的问题

时间:2016-07-14 03:34:02

标签: swift null-coalescing-operator

有没有办法在Swift中的nil合并运算符中不使用强制解包?

我尝试使用:

Int(errorCodeString?) ?? 500

但是,这没效果。

整个代码段是:

var errorCodeString: String?

errorCodeString = "404"

let actualErrorCode = Int(errorCodeString!) ?? 500

print("Actual Error Code: \(actualErrorCode)")

2 个答案:

答案 0 :(得分:0)

不确定。使用nil coalescing operator两次,一次打开String?,第二次打开Int?

let actualErrorCode = Int(errorCodeString ?? "") ?? 500

说明:

您的errorCodeString是可选String(又名String?)。执行errorCodeString ?? ""会解除errorCodeString nil,如果""则将其替换为nil

结果传递给Int初始值设定项,后者为StringInt(_:String)初始值设定项会将String转换为Int?,如果nil不代表有效String,则Int包含整数值或?? }。如果值为Int?,则第二个零合并运算符500将展开nil或将其替换为Int(errorCodeString?) ?? 500

您最初尝试的内容?不起作用,因为只有?的可选项才会在可选链中有条件地将其展开。在这种情况下,您必须使用成员访问权限,方法调用或索引运算符[]关注<button type="button" id="setc">Set Cookie</button>

答案 1 :(得分:0)

Int初始值设定项不接受可选项。

您的Int(errorCodeString?) ?? 500在语法上是不正确的。请改用Int(errorCodeString ?? "") ?? 500