我在Swift中面临零合并的问题
在Swift中,有没有一种方法可以不在nil凝聚操作符中使用强制展开 我尝试使用:我在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
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)