这个问题在这里已有答案:
我正在尝试创建一个应用程序,允许您在UserDefaults中保存一个数字,然后再添加到该数字。现在,我一直收到错误:
'二元运算符'+'不能应用于两个'Int?'操作数
谁能指出我正确的方向?
class FirstViewController: UIViewController {
var totalHoursInt = 0
var typeHoursInt = 0
var savedHours = 0
@IBOutlet weak var totalHours: UILabel!
@IBOutlet weak var typeHours: UITextField!
@IBAction func addButton(_ sender: Any) {
totalHours.text = typeHours.text!
UserDefaults.standard.set(typeHours.text, forKey: "savedHours")
typeHours.text = ""
var totalHoursInt = Int(totalHours.text!)
var typeHoursInt = Int(typeHours.text!)
print(totalHoursInt + typeHoursInt)
}
override func viewDidAppear(_ animated: Bool) {
if let x = UserDefaults.standard.object(forKey: "savedHours") as? String {
totalHours.text = x
}
}
}
带有String参数的Int()
不返回Int值,而是Int可选。这是因为String to Int转换可能失败,在这种情况下转换返回nil。并且+
运算符根本没有为期权定义。
要解决您的问题,您需要确保返回的值不是n,使用如下结构:
if let totalHours = totalHoursInt, let typeHours = typeHoursInt {
print(totalHours + typeHours)
}
if let ...
仅在右侧非零时才分配值,因此变量从选项转换为非选项。 (你在viewDidAppear
中使用它。)之后,+
运算符将起作用。