我正在构建一个布尔数组,用于在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)
我错过了一些明显的东西,还是一个奇怪的错误?