繁体   English   中英

有关Swift中可选变量操作的问题

[英]Questions about optional variable operations in 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

我可以解决此错误并正常增加可选变量的值吗?

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

0 += 1

错误消息恰好告诉您-表达式的左侧是不可变的,因为0文字是不可变的。

您可以这样解决:

page = (page ?? 0) + 1

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

page = 0 + 1

如果有一个值,则为:

page = page + 1

尽管米兰的答案绝对正确,但我认为值得一提的是,您也可以考虑将页面属性更改为默认值为0的非可选变量。这将简化您的逻辑,因为您不需要处理它是可选的(展开等)。

var page: Int = 0 //Received data from previous VC - defaults to 0


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

显然,只有在没有其他代码专门在page值为nil时执行某些操作的情况下,这才有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM