Как я могу создать переменную, которая запускается только один раз или уже существует до цикла ForEach? - PullRequest
0 голосов
/ 02 ноября 2019

Я создал цикл ForEach, и теперь мне нужна переменная, которая уже существует до цикла ForEach. Я поместил переменную в структуру базового представления.

Я пробовал что-то вроде @State, но дело в том, что это приведет к задержке с переопределением переменной. Таким образом, цикл ForEach выполняется до изменения переменной.


 @State var Bol:Bool = true

    var DatesThatAreNewer = Date()



    var body: some View {
        NavigationView{
            List{
                ForEach(self.dayActivities, id: \.self){dayActivity -> AnyView in
                    //NewDays(day: dayActivity.date!)
                    let isNewDay = (dayActivity.date!, formatter: ContentView.self.Day)


                    if self.Bol{
                        let DatesThatAreNewer = Date()
                    }

                    let oldDateType = self.Bol ? (self.OldDate.asDate, formatter: ContentView.self.Day) : (self.DatesThatAreNewer, formatter: ContentView.self.Day)
                    //var isOldDate = (oldDateType, formatter: ContentView.self.Day)

                    print("------------- S1")
                    print(asStringDate(date: dayActivity.date!))
                    print(asStringDate(date: self.DatesThatAreNewer))
                    print("-------------")
                    self.Bol = false
                    if (asStringDate(date: dayActivity.date!) == asStringDate(date: self.DatesThatAreNewer)){
                        print("Hello world 1")
                        print(oldDateType)
                        print(isNewDay)
                        return AnyView(DayActivityView(name: dayActivity.name!, date: dayActivity.date!))
                    }else{
                        print("Hello world 2")
                        print(oldDateType)
                        print(isNewDay)
                        print(dayActivity.name!)
                        DatesThatAreNewer = dayActivity.date!
                        print(asStringDate(date: self.DatesThatAreNewer))
                        //isOldDate = isNewDay
                        return AnyView(Section(header: Text(String(asString(date: dayActivity.date!)))){
                                DayActivityView(name: dayActivity.name!, date: dayActivity.date!)
                        })                        //create seperator and DayActivityView
                    }

                }
            }
            .navigationBarTitle(Text("Dag activiteiten"))
            .navigationBarItems(leading: EditButton(),trailing:
            NavigationLink(destination: ActivityAanmakenView()) {
                Text("Toevoegen")
            })
        }
    } 

(Простите за множество объектов печати)

Поэтому в основном я ищу способ переопределить переменную DatesThatAreNewer, потому что теперь она говорит, что она неизменна, и если я добавлю@State происходит задержка, и код больше не работает, как ожидалось.

1 Ответ

0 голосов
/ 04 ноября 2019

Исправил это сам, вы просто должны поместить var вне объекта struct.

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