我在Swift中面临零合并的问题

我在Swift中面临零合并的问题,swift,null-coalescing-operator,Swift,Null Coalescing Operator,在Swift中,有没有一种方法可以不在nil凝聚操作符中使用强制展开 我尝试使用: Int(errorCodeString?) ?? 500 但是,这不起作用 整个代码段是: var errorCodeString: String? errorCodeString = "404" let actualErrorCode = Int(errorCodeString!) ?? 500 print("Actual Error Code: \(actualErrorCode)") 当然。使用n

在Swift中,有没有一种方法可以不在nil凝聚操作符中使用强制展开

我尝试使用:

Int(errorCodeString?) ?? 500
但是,这不起作用

整个代码段是:

var errorCodeString: String?

errorCodeString = "404"

let actualErrorCode = Int(errorCodeString!) ?? 500

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

当然。使用
nil合并运算符
两次,一次打开
字符串?
,第二次打开
Int?

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

说明: 您的
errorCodeString
是可选的
String
(又称
String?
)。正在执行
errorCodeString??“
如果不是
nil
则将展开
errorCodeString
,如果是
nil
则将其替换为

其结果被传递给
Int
初始值设定项,该初始值设定项采用
字符串。
Int(uquo:String)
初始值设定项将
String
转换为
Int?
,如果
String
不代表有效的
Int
,则该字符串包含整数值或
nil
。如果值为
nil
,则第二个nil合并运算符
将展开
Int?
或将其替换为
500


您最初尝试了什么
Int(errorCodeString?)??500
不起作用,因为跟随带有
的可选链接?
仅在可选链中有条件地将其展开。在这种情况下,您必须遵循
,使用成员访问、方法调用或索引运算符
[]

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


您的
Int(errorCodeString?)??500
在语法上不正确。使用
Int(errorCodeString??)??500
取而代之。

您面临什么错误?你的代码对我来说很好!如果您使用Int(errorCodeString?),而不是强制展开“errorCodeString”??500,你会看到错误是的,这很有效。你能解释一下这里发生了什么吗?谢谢你的精彩解释。但是,这里如果errorCodeString为nil,则其值将更改为“”。如果我不想更改errorCodeString,如果它为nil,那么我希望它保持为nil?好的,我试着检查errorCodeString的值,它仍然显示为nil,这就是我想要的。谢谢你的解释。你的建议很好用。你能进一步解释一下吗?当我寻找一种方法来处理item quantity的Int32核心数据属性时,我在一个以前只使用字符串的ForEach(SwiftUI)中遇到了一个nil合并问题。像这样一个简单的修改就像一个符咒。数量:Int(currentItem.itemQuantity)