SwiftUI如何更改for循环中的值

Posted

技术标签:

【中文标题】SwiftUI如何更改for循环中的值【英文标题】:SwiftUI How to change Value in for Loop 【发布时间】:2021-08-04 15:14:53 【问题描述】:

我目前正在开发一款订餐应用。 我遇到了以下问题。 这是相关代码的一部分

I have a button at the top right to change enum Foodstage to .main

@Published var cartexpress : [CartModel] = [] 

 enum Foodstage : Codable,CaseIterable 
    case Starter,Second, Main,SpecialMenu,Drinks, Extra



struct CartModel : Codable,Identifiable,Equatable 
    var id = UUID().uuidString
    var name : String
    var quantity : Int
    var price : Double
    var type : Foodstage
    var date: Date
    var extra : [String]
 ```


the error appears when I want to use for In loop to the the Food Stage
``` func CookTogether()
        
        cartexpress.forEach  type in
            return type.type = .Main
        
        
     

错误代码是无法分配给属性:'type' is a 'let' constant。

请谁能教我如何解决这个问题。 非常感谢。

【问题讨论】:

【参考方案1】:

forEach 中,您正在创建一个新变量 - type。但是,这是恒定的,CartModelstruct,这意味着我们不能只更改属性,因为它不是引用类型。

您可以做的是遍历cartexpress 的索引(类似于0 ..< cartexpress.count)并为数组中的每个元素设置type 属性。

试试下面的代码:

for index in cartexpress.indices 
    cartexpress[index].type = .main

按照惯例,我使用 .main 作为枚举案例名称,而不是 .Main

【讨论】:

以上是关于SwiftUI如何更改for循环中的值的主要内容,如果未能解决你的问题,请参考以下文章

根据一维数组中的值更改二维numpy数组中的某些值而无需for循环

JS中如何解决for循环中的延迟执行问题

使用 for 循环(python)更改列表中的值

如何在exe脚本的ant脚本中更改for循环中outputproperty的值

FOR循环中的上界在循环中没有改变,为啥?

过滤 For Each 循环 - swiftui