【问题标题】:How to add two Ints in Swift 4? [duplicate]如何在 Swift 4 中添加两个 Int? [复制]
【发布时间】:2018-03-01 17:04:25
【问题描述】:

我正在尝试制作一个应用程序,允许您在 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
        }
    }
}

【问题讨论】:

  • 不是两个Ints,是两个Int?'s

标签: swift int


【解决方案1】:

Int() 带有 String 参数不会返回 Int 值,而是返回 Int Optional。这是因为 String 到 Int 的转换可能会失败,在这种情况下转换返回 nil。并且 + 运算符根本没有为可选项定义。

要解决您的问题,您需要确保返回的值为零,使用如下构造:

if let totalHours = totalHoursInt, let typeHours = typeHoursInt {
    print(totalHours + typeHours)
}

if let ... 仅在右侧为非 nil 时才赋值,因此变量从可选项转换为非可选项。 (您在 viewDidAppear 中使用它。)之后,+ 运算符将起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多