Swift - 如何在迭代结构对象时改变它

2023-11-29

我仍然不确定结构复制或引用的规则。

我想在从数组迭代结构对象时改变它: 例如在这种情况下我想改变背景颜色 但编译器对我大喊大叫

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

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

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift - 如何在迭代结构对象时改变它 的相关文章

随机推荐

  • 嵌套 FutureBuilder 与从数据库延迟加载的嵌套调用

    我需要在我可以遵循的两种方法之间选择最佳方法 我有一个 Flutter 应用程序使用sqflite为了保存数据 在数据库内我有两个表 员工 employee id employee name dep id e12 Ada Lovelace
  • Sparklyr:如何根据列将 Spark 表居中?

    我有一个 Spark 表 simx x0 num 1 00 2 00 3 00 x1 num 2 00 3 00 4 00 x788 num 2 00 3 00 4 00 和一个名为simX tbl在连接到此的 R 环境中simx tabl
  • Oracle:将 CTE 与更新子句结合使用

    我可以使用oracle数据库中的公用表表达式进行更新吗 我收到错误ORA 00928 missing SELECT keyword当我尝试这个时 with average as SELECT avg salary FROM instruct
  • 如何在 C 中使用动态多维数组?

    有人知道如何使用 C 来使用动态分配的多维数组吗 那可能吗 从 C99 开始 C 就拥有了带有动态边界的二维数组 如果您想避免在堆栈上分配此类野兽 您应该这样做 您可以轻松地一次性分配它们 如下所示 double A n malloc si
  • 使用 Sonata Admin 处理 Doctrine json_array 字段

    是否有任何 内置 方式来管理教义json array使用 Sonata Admin 的字段 我在 Symfony Sonata 文档 或代码 中找不到任何有用的文档 或相关代码 但我希望我错过了一些东西 理想情况下 我希望看到序列化的键 值
  • 当有大量输入时,Chrome 速度很慢

    在我们的 MVC 5 项目中有一个页面 用户可以在其中检查多个资产 每个资产都由复选框和名称表示 当有大量资源 大约 800 1000 个 时 Chrome 会变得非常慢 有时甚至会显示 页面不负责任 的消息 它看起来像这样 页面部分呈现并
  • 更新时触发更新列

    我写了这个函数和这个触发器 CREATE OR REPLACE FUNCTION test4 RETURNS TRIGGER AS BODY BEGIN UPDATE cf SET vol area alt RETURN null END
  • SQL 中的 IF ELSE 语句

    SELECT S Id S Name S Version S SoftNo FROM SOFTWARE S WITH NOLOCK WHERE IF S Version 0 THEN S Version gt 0 ELSE S Versio
  • Flutter中Completer和Isolates的解释和区别

    我需要在我的应用程序上返回一个 Future 因为我认为我的函数需要太多时间才能完成 所以我有两个可能的答案 使用完成者 or an Isolate 是什么让我选择其中之一 我可以将 Completer 放在我想要的任何地方并相信它会正常工
  • Android 智能手机应用程序支持 Android 平板电脑

    我正在 Android 中创建一个应用程序 最初我只为智能手机制作它 但现在我希望同样的应用程序能够支持 Android 平板电脑 问题在于缩放 它没有缩放到平板电脑屏幕的大小 我使用了 LinearLayout 高度和宽度作为 fill
  • 如何使用 css 更改图像中的蓝色背景选择颜色

    任何人都可以帮助我如何从选择的图像中删除蓝色 你可以从这里看到截图 You can use the user select property though pressing CTRL A will still cause the blue
  • 事件处理程序未添加到新邮件项目中

    我正在尝试创建一个简单的 Outlook 2010 加载项来响应新的附件事件 下面的代码仅在我取消注释 MessageBox Show 行时才有效 但删除它后 似乎没有添加事件处理程序 我在程序流程中缺少什么 这意味着模式消息框会影响事件处
  • 为什么更改 CSS 类名会破坏样式?

    这对我来说真是一件令人头疼的事 我将 Zurb Foundation 与 SASS 以及 Django 开发服务器结合使用 问题是这样的 我有一个带有一些选择器的 SCSS 文件 它们可以按需要工作 但是 如果我改变nameSCSS 和 H
  • 避免退出后返回

    我发现这些问题 其中操作员有与我相同的问题 1 2 但是 我无法解决我的问题 用户按下注销按钮 页面将重定向到index php 但浏览器中的后退按钮会将页面重定向到之前的内容 受登录保护 刷新后 一切正常 后退按钮停止工作 gt 用户被重
  • Websphere 8.5.5 上的 Spring Data JPA + Hibernate

    从 Tomcat 迁移到 WebSphere 时 我遇到了 Spring 4 Hibernate 项目无法正确加载的问题 我已经将应用程序设置为 PARENT LAST 类加载器 并将我的 Hibernate 版本恢复到 4 2 16 因为
  • 重复范围可替换为“*”是什么意思?

    我在 IntelliJ IDEA 中执行了代码分析器 它显示了弱警告 重复范围可由 替换 它在我使用正则表达式模式的下面代码行显示警告 String pattern prefix length suffix 我不确定我的代码在替换后是否可以
  • ORDER BY datetime 使查询非常慢

    我正在尝试从多个表中提取数据 当我使用 ORDER BY 日期时间字段时 它会在至少 10 秒后返回结果 但如果我在没有 ORDER BY 的情况下执行相同的查询 那么它会在 2 秒内返回结果 这是我当前的查询 SELECT ph call
  • 将字节数组转换为 Stream 时 ReadTimeout 引发异常

    我收到这个错误 ReadTimeout System IO Stream ms ReadTimeout threw an exception of type System InvalidOperationException 我的代码是 by
  • R Shiny - 将鼠标悬停在图标上时弹出窗口

    我想简单地在简单的文本行后面的图标上添加一个悬停窗口 我找到了shinyBS包 它似乎使这成为可能 但它链接到shiny输出 在闪亮的应用程序的 ui 中添加类似下面的代码可以使按钮正常工作 但在本例中它们链接到单选按钮 CVI lt c
  • Swift - 如何在迭代结构对象时改变它

    我仍然不确定结构复制或引用的规则 我想在从数组迭代结构对象时改变它 例如在这种情况下我想改变背景颜色 但编译器对我大喊大叫 struct Options var backgroundColor UIColor blackColor var