SwiftUI: ViewBuilder не может создать коллекцию Views на основе массива - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь построить простой List с помощью SwiftUI.Однако я не могу динамически создавать строки, используя массив данных.Это сообщение об ошибке: Cannot convert value of type '(Setlist) -> SetlistRow' to expected argument type '(_) -> _'

Я пробовал по крайней мере следующие синтаксисы, но всегда получаю одну и ту же ошибку.

  • List(setlists) { }
  • List(setlists, rowContent: Setlist.init)
  • ForEach(self.setlists) { setlist in }

Вот мой код:

struct Setlist {
    var name: String = "New setlist"
    var sets = [SongSet]()
}

struct SetlistManagerView : View {

    private var setlists: [Setlist] {
        // creates an array of dummy items
    }

    var body : some View {

        List {
            ForEach(setlists) {
                SetlistRow(setlist: $0)
            }
        }

    }
}

struct SetlistRow : View {

    var setlist: Setlist

    var body : some View {

        let numberOfSongs = setlist.sets.map { $0.songs.count }.reduce(0, +)

        return NavigationView {
            NavigationButton (destination: SetListView(setlist: setlist)) {
                // code for displaying the row
            }
        }
    }
}

1 Ответ

0 голосов
/ 14 июня 2019

Элементы списка должны соответствовать протоколу Identifiable, чтобы их можно было использовать в качестве источника данных сбора без аргумента identified(by:).

Сообщение об ошибке Xcode здесь вводит в заблуждение, поскольку программное обеспечение все еще находится в бета-версии.

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