首页 > 解决方案 > 关于 Swift 中可选变量操作的问题

问题描述

我将变量设置为可选,从服务器获取变量的值,并尝试在每次按下按钮时递增它。

var page: Int? //Received data from previous VC


@IBAction func nextPage(_ sender: Any) {
    (page ?? 0) +=1
}

但是此代码会导致错误。

Left side of mutating operator isn't mutable: '??' returns immutable value

我可以修复这个错误并正常增加可选变量的值吗?

标签: iosswift

解决方案


最初page变量为 nil,因此左侧将通过??运算符降至 0,因此基本上您正在尝试执行此代码:

0 += 1

错误消息准确地告诉您这一点 - 此表达式的左侧是不可变的,因为 0 字面量是不可变的。

您可以通过以下方式修复它:

page = (page ?? 0) + 1

这里如果page为 nil,它将执行为:

page = 0 + 1

如果有值,则为:

page = page + 1

推荐阅读