ios - 关于 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
推荐阅读
- python - django新建用户时如何自动加载默认图片
- android - 在启用 R8 的模块中发现重复的类
- mongodb - Mongodb 2顺序查询到1个有限制的集合
- php - Laravel 使用变量更改重置密码电子邮件问候语
- php - 如何阻止用户个人资料图片被缓存并且无法正确显示php
- windows - 将 PostGIS 扩展添加到 PostgreSQL 时出错 - Win10
- rest - 使用 AWS Cognito 的公共 REST API 身份验证和授权
- laravel - 如何发送自定义html验证邮件?
- c++ - 将软件移植到 Windows,我在哪里放置 /usr/share 的东西?
- azure - Azure 和 AzureRM Powershell 模块冲突