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