SwiftUI 在 For Each 中获取下一个循环的值

Posted

技术标签:

【中文标题】SwiftUI 在 For Each 中获取下一个循环的值【英文标题】:SwiftUI get value of next loop in For Each 【发布时间】:2020-04-21 19:42:19 【问题描述】:

我正在尝试显示在日期('date')上输入的值('timeMinutes' 的总和)。我将在 ForEach 循环中显示所有这些条目。这个想法是我计算新的 timeMinutes 是高于还是低于上次输入的时间。

请注意,日期和时间是一对多的关系。

制作 ForEach 循环很好:

    ForEach(dates, id: \.self)  day in
        Section(header: Text("\(self.formatDate(date: day.date!))")) 
            ForEach(day.timeArray, id: \.self)  time in
                VStack 
                Text("\(String(time.timeMinutes))")
                
            
            Text("Total time is \(self.time.filter$0.date.date == day.date.map$0.timeMinutes.reduce(0, +))")
            Text("The last time you did this was: \(DATA FROM NEXT LOOP????)")
            Text("The difference is \(ADD/SUBSTRACT - RESULT)")
        
    

基本上我想要下一个循环的“总时间”。我该怎么做呢?我的日期是按日期排序的,所以转到下一组(一种索引+1-idea)就足够了。我已经搜索了所有内容,但我对如何做到这一点感到头疼。

如果我进入最后一组,结果会如何?有没有人建议如何做到这一点?

【问题讨论】:

【参考方案1】:

找到了修复它的方法:)。受 E.Coms (SwiftUI - ForEach with Stride) 的启发,我用了下面的方法吧。

        List
           ForEach(0 ..< self.dates.count)  index in
                Section(header: Text("\(self.formatDate(date: self.dates[index].date!))")) 
                    ForEach(self.dates[index].timeArray, id: \.self)  time in
                        VStack 
                                 Text("\(String(time.timeMinutes))")
                         
                    
                    Text("Total time is \(self.values.filter$0.date.date == self.dates[index].date.map$0.timeMinutes.reduce(0, +))")

                    if index == (self.dates.count - 1) 
                        Text("No other values")
                     else 
                        Text("Last month was: \(self.values.filter$0.date.date == self.dates[index+1].date.map$0.timeMinutes.reduce(0, +))")
                    
                
            
        

感谢 E.Com 和其他可能对此有所思考的人!

【讨论】:

以上是关于SwiftUI 在 For Each 中获取下一个循环的值的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI ForEach Binding 编译时错误看起来不像 for-each

SwiftUI List 和 For Each 循环与空白元素

如何在已排序的 xsl:for-each 循环中访问前一个和下一个元素的值

Java For each 如何获取索引

我可以在没有计数器的情况下引用“for each”循环的索引吗?

每次 for-each 迭代获取 2 个结果值