Ios 不可变?敏捷的

Ios 不可变?敏捷的,ios,swift,indexing,uiviewcontroller,segue,Ios,Swift,Indexing,Uiviewcontroller,Segue,我正在尝试使用 selectedPrevious = mons[indexPath -= 1] 但是我得到一个错误,指出indexPath是一个let常量。然而,似乎没有办法将其更改为变量。我尝试过创建和Int变量,并将其分配给索引,如下所示 index = indexPath.row -= 1 selectedPrevious = mons[index] 但是现在,尝试使用+=或-=会产生新的错误 无法使用“()”类型的索引为“[Monster]”类型的值下标 我怎样才能增加这个。目的是在

我正在尝试使用

selectedPrevious = mons[indexPath -= 1]
但是我得到一个错误,指出indexPath是一个let常量。然而,似乎没有办法将其更改为变量。我尝试过创建和Int变量,并将其分配给索引,如下所示

index = indexPath.row -= 1
selectedPrevious = mons[index]
但是现在,尝试使用
+=
-=
会产生新的错误

无法使用“()”类型的索引为“[Monster]”类型的值下标

我怎样才能增加这个。目的是在我的第二个
Viewcontroller
中重新加载数据。仅传递
索引
变量本身不会影响数据重新加载。

传递给swift函数(传递值)的参数(参数)默认为
let
。这意味着可以读取传递给函数的参数值,但不能修改

这适用于所有变量,而不仅仅是indexath:)

因此,您所做的是错误的:)如果您想修改indexPath的值,您可以这样做:)

如您所见,我创建了索引路径的本地副本并修改了其值:)

编辑:

声明

indexPath.row -= 1
不仅会将indexPath行减去1,还会尝试将数据分配回默认情况下允许的indexPath。如果您真的想修改indexPath值本身,可以执行我上面提到的操作

如果您的目的只是计算行索引,而不是修改索引,请自行修改

index = indexPath.row - 1

您想要
let index=indexath.row-1
,或者只想
selectedPrevious=mons[indexPath.row-1]
问题是,当我调用此函数然后重新加载数据时,它只调用一次,这就是我试图增加它的原因。如果您想增加indexpath.row,只需增加numberofrow方法中返回行的数量,而不是indexpath.row。
index = indexPath.row - 1