You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中ForEach使用结构体属性失效问题求助

SwiftUI ForEach绑定场景下Text无法渲染模型字段的问题解决

问题原因

你用ForEach($alarmEntries)拿到的alarmEntry是Binding类型,不是直接的模型实例:

  • Toggle的isOn参数刚好需要Binding<Bool>,所以alarmEntry.enabled能正常工作;
  • Text需要的是具体字符串,但你调用的alarmEntry.description是Binding类型自带的属性,不是你定义的AlarmEntry里的description字段,所以没法正常显示内容。

修复代码

直接通过wrappedValue获取绑定包裹的原始模型实例,就能拿到正确的description字段:

ForEach($alarmEntries) { alarmEntry in
    // 用wrappedValue访问模型的description
    Text(alarmEntry.wrappedValue.description)
    Toggle(isOn: alarmEntry.enabled){
        Text(verbatim: "This works...")
    }
}

补充说明

如果你的视图不需要修改AlarmEntry的属性,也可以直接遍历数组本身(不用绑定),此时alarmEntry就是AlarmEntry实例,直接写Text(alarmEntry.description)就行,但这种写法下Toggle没法修改enabled状态,因为没有绑定支持双向修改。

内容的提问来源于stack exchange,提问作者wanted

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:17:16