SwiftUI - ForEach - Тип «_» не имеет члена «имя» - PullRequest
1 голос
/ 16 февраля 2020

Я пытаюсь ForEach над массивом строк внутри класса и получаю сообщение об ошибке: Type '_' has no member 'name'

Я пытаюсь смоделировать то, что прочитал в этом уроке, и не Я не понимаю, почему мой не компилируется. https://www.hackingwithswift.com/books/ios-swiftui/working-with-identifiable-items-in-swiftui

struct StatisticItem: Codable {
    let name: String
    let startValue: Int
    let modifier: Int
}

class Statistics: ObservableObject {
    let statisticsNames = ["One", "Two"]
    @Published var statList: [StatisticItem]

    init() {
        self.statList = [];
        for statisticsName in statisticsNames {
            self.statList.append(StatisticItem(name: statisticsName, startValue:  Int.random(in: 20 ... 100), modifier: 0))
        }
    }
}

struct ContentView: View {
    @ObservedObject var statistics = Statistics()

    var body: some View {
        Form {
            List {
                // Error shows up on this line: Type '_' has no member 'name'
                ForEach(statistics.statList, id:\.name) { stat in
                    TextField(stat.name)
                }
            }
        }
    }
}

1 Ответ

1 голос
/ 16 февраля 2020

Прежде всего ваша модель должна быть модифицируемой (поэтому используется var вместо let)

struct StatisticItem: Codable {
    var name: String
    var startValue: Int
    var modifier: Int
}

Во-вторых, TextField требует Binding, поэтому она должна быть такой, как показано ниже

ForEach(Array(statistics.statList.enumerated()), id:\.1.name) { (i, stat) in
    TextField("", text: self.$statistics.statList[i].name)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...