加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift – 如何在迭代结构对象时进行突变

发布时间:2020-12-14 05:20:39 所属栏目:百科 来源:网络整理
导读:我仍然不能确定结构拷贝或引用的规则. 我想在一个数组中迭代一个struct对象: 例如在这种情况下,我想改变背景颜色 但编译器对我大喊大叫 struct Options { var backgroundColor = UIColor.blackColor()}var arrayOfMyStruct = [MyStruct]...for obj in array
我仍然不能确定结构拷贝或引用的规则.

我想在一个数组中迭代一个struct对象:
例如在这种情况下,我想改变背景颜色
但编译器对我大喊大叫

struct Options {
  var backgroundColor = UIColor.blackColor()
}

var arrayOfMyStruct = [MyStruct]

...

for obj in arrayOfMyStruct {
  obj.backgroundColor = UIColor.redColor() // ! get an error
}
struct是值类型,因此在for循环中你正在处理一个副本.

作为一个测试,你可以试试这个:

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() 
}

在这里,您只需枚举索引,并直接访问存储在数组中的值.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读