小编Eri*_*tta的帖子

Swift可选的Array属性是不可变的?

我正在构建一个布尔数组,用于在UICollectionView中存储节的状态.它是一个存储为我的UIViewController属性的变量:

var _weekSelections : Array<Bool>!
Run Code Online (Sandbox Code Playgroud)

然后,在loadView()调用的函数中,我构造数组并为第一个索引赋值:

_weekSelections = Array<Bool>(count:_weekCount, repeatedValue:false)
_weekSelections[0] = true
Run Code Online (Sandbox Code Playgroud)

索引0处的值仍为false!数组是构造的,并且有多个元素,但是我对索引的任何赋值都不会影响存储在该索引处的值,即使我检查下一行代码的值.我知道如果我执行一个可能会改变其长度的动作,Swift会制作一个数组的副本,但我不认为这是我制作副本的情况.我可以获得任何值更改的唯一方法是,如果我手动创建副本,如下所示:

var copy = _weekSelections
copy[0] = true
_weekSelections = copy
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西,还是一个奇怪的错误?

arrays immutability optional swift

8
推荐指数
1
解决办法
3104
查看次数

标签 统计

arrays ×1

immutability ×1

optional ×1

swift ×1