就像测试一样,你可以试试这个:斯威夫特 3:结构选项{var backgroundColor = UIColor.black}var arrayOfMyStruct = [选项]()for (index, _) in arrayOfMyStruct.enumerated() {arrayOfMyStruct[index].backgroundColor = UIColor.red}斯威夫特 2:结构选项{var backgroundColor = UIColor.blackColor()}var arrayOfMyStruct = [选项]()for (index, _) in enumerate(arrayOfMyStruct) {arrayOfMyStruct[index].backgroundColor = UIColor.redColor()}这里只是枚举索引,直接访问数组中存储的值.希望这会有所帮助.I am still not sure about the rules of struct copy or reference.I want to mutate a struct object while iterating on it from an array:For instance in this case I would like to change the background colorbut the compiler is yelling at mestruct Options { var backgroundColor = UIColor.blackColor()}var arrayOfMyStruct = [MyStruct]...for obj in arrayOfMyStruct { obj.backgroundColor = UIColor.redColor() // ! get an error} 解决方案 struct are value types, thus in the for loop you are dealing with a copy.Just as a test you might try this:Swift 3:struct Options { var backgroundColor = UIColor.black}var arrayOfMyStruct = [Options]()for (index, _) in arrayOfMyStruct.enumerated() { arrayOfMyStruct[index].backgroundColor = UIColor.red}Swift 2:struct Options { var backgroundColor = UIColor.blackColor()}var arrayOfMyStruct = [Options]()for (index, _) in enumerate(arrayOfMyStruct) { arrayOfMyStruct[index].backgroundColor = UIColor.redColor()}Here you just enumerate the index, and access directly the value stored in the array.Hope this helps. 这篇关于Swift - 如何在迭代结构对象时对其进行变异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-13 13:05