SwiftUI получает значение следующего l oop в For Each - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь отобразить значение (сумму «timeMinutes»), которое было введено в дату («date»). Я буду отображать все эти записи в ForEach l oop. Идея состоит в том, чтобы я вычислил, будет ли новый timeMinutes выше или ниже значения, введенного в последнюю дату.

Обратите внимание, что дата-время является отношением один-ко-многим.

Создание ForEach l oop в порядке:

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

По сути, я хочу «Общее время» из следующего l oop. Как мне это сделать? Мои даты отсортированы по дате, поэтому достаточно перейти к следующему набору (своего рода Индекс + 1-идея). Я искал все, но я ломаю голову над тем, как это сделать.

А также как это сработает, если я доберусь до последнего сета? У кого-нибудь есть предложения, как это сделать?

1 Ответ

0 голосов
/ 22 апреля 2020

Нашел способ это исправить :). Вдохновленный 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 и другим, кто мог подумать об этом!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...