Немного сложно знать наверняка, не имея остального кода, чтобы сделать этот компилятор, но я смоделировал его локально, и похоже, что все, что вам нужно изменить, это:
ForEach(0..<self.model.weatherList.count, id: \.self) { i in
на
ForEach(0..<self.model.weatherList.count) { i in // remove the id: argument
Объяснение:
Если вы используете диапазон для перебора массива, вы не используете аргумент id :. Диапазон автоматически идентифицируется. Инициализатор ForEach(_:id:content:)
используется в тех случаях, когда вы можете сказать:
ForEach(self.model.weatherlist, id: \.self) { model in
SomeView(model: model)
}
Это компилируется для вас?
Редактировать: пример, который вы привели, выглядит так, как будто он сделает то же самое Индекс равен 0 или нет. Есть ли причина, по которой он не работает, если вы попытаетесь:
ForEach(0..<self.model.weatherList.count) { i in
NavigationLink(destination: DetailView(model: self.model.weatherList[i])) {
RowView(model: self.model.weatherList[i])
}
}