As I understand it, the iterator
for c in collectionData
returns copies of the items in collectionData
- (structs
are value types, not reference types, see http://www.objc.io/issue-16/swift-classes-vs-structs.html), whereas the iteration
for i in 0..<collectionData.count
accesses the actual values. If I am right in that, it is pointless to assign to the c
returned from the iterator... it does not "point" at the original value, whereas the
collectionData[i].selected = false
in the iteration is the original value.
Some of the other commentators suggested
for (var c) in collectionData
but although this allows you to assign to c
, it is still a copy, not a pointer to the original, and though you can modify c
, collectionData
remains untouched.
The answer is either A) use the iteration as you originally noted or B) change the data type to a class, rather than a struct.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…