[英]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.