0

我有一个包含自定义类数组的字典,定义如下:

var coupons: [String: [Coupon]]

我将它们放入 ForEach 中,如下所示:

List {
                        
        ForEach(keys, id: \.self) { key in
                Section(header: Text(key)) {
                    ForEach(couponDict[key] ?? [], id: \.id) { coupon in
                            Button(ifexpiredString(date: coupon.date)+coupon.data[1]) {
                                     let coupons = UserDefaults.standard.coupons
                                     let couponIndex = coupons.firstIndex(of: coupon)
                                     self.currentview = "Coupon"+String(couponIndex!)
                            }.foregroundColor(ifexpired(date: coupon.date) ? Color.gray : ifexpireing(date: coupon.date))
                   }
           }
     }
}

我已经阅读了很多关于进行自动更新ForEach或的答案List,但没有一个使用字典,其中每个键下存储了一组自定义对象。更糟糕的是,我couponDictUserDefaults. 我怎样才能做到这一点ListForEach自动更新自己?

4

1 回答 1

1

尝试这样的事情:

List {
    ForEach(Array(coupons.keys), id: \.self) { key in 
    // or ForEach(coupons.keys.sorted(), id: \.self) { key in 
        Section(header: Text(key)) {
            ForEach(coupons[key] ?? [], id: \.id) { coupon in
                Button(ifexpiredString(date: coupon.date)+coupon.data[1]) {
                    let coupons = UserDefaults.standard.coupons
                    let couponIndex = coupons.firstIndex(of: coupon)
                    self.currentview = "Coupon"+String(couponIndex!)
                }.foregroundColor(ifexpired(date: coupon.date) ? Color.gray : ifexpireing(date: coupon.date))
            }
        }
    }
}
于 2021-08-26T02:12:59.450 回答