Swift中String转Int后相加报错无法对两个Int?操作数使用+运算符如何解决
错误原因
- 语法层面:
String调用Int()构造器的返回值是可选型Int?,转换失败时会返回nil,Swift语法不支持直接对两个可选型数值执行+运算,因此抛出编译错误。 - 逻辑层面:你当前先对字符串执行
+运算属于字符串拼接,会把"6"和"5"拼接为"65",而非数值6+5,完全不符合得到19的预期。
修复方案
如果你能100%确认待转换的字符串都是合法的数字字符,可以用强制解包处理可选型,同时调整运算顺序先转数值再做加法:
var n1 = "6" // 先把字符串转Int再和5做数值加法,得到6+5=11 var number = Int(n1)! + 5 var n2 = "3" // 先把字符串转Int再和5做数值加法,得到3+5=8 var number2 = Int(n2)! + 5 var finalNumber = number + number2 print(finalNumber) // 输出19
如果不能保证字符串一定可以转成合法Int,推荐用可选绑定避免强制解包引发的崩溃:
var n1 = "6" var n2 = "3" if let num1 = Int(n1), let num2 = Int(n2) { let finalNumber = (num1 + 5) + (num2 + 5) print(finalNumber) // 转换成功时输出19 } else { print("字符串包含非数字内容,转换失败") }
也可以用空合运算符给转换失败的场景设置默认值:
var n1 = "6" var number = (Int(n1) ?? 0) + 5 var n2 = "3" var number2 = (Int(n2) ?? 0) + 5 var finalNumber = number + number2 print(finalNumber)
内容的提问来源于stack exchange,提问作者Joe Rogan
相关产品推荐
相关产品推荐

