Impossible d'utiliser la combinaison avec TextField
Oct 23 2020
J'essaie de transmettre des données à TextField en utilisant combiner. en créant un modèle de données et en utilisant observableObject, mais lorsque je l'utilise dans textField, cela me montre l'erreur. Impossible de convertir la valeur de type 'String' en type d'argument attendu 'Binding <String>' . Je ne peux pas le comprendre.
modèle de données
struct People: Identifiable {
var id = UUID()
var name: String
var amount: String
}
let peopleData = [
People(name: "A",amount: ""),
People(name: "B",amount: ""),
People(name: "C",amount: "")
]
ObservableObject
import Combine
class PeopleAllData: ObservableObject{
@Published var peopleStore: [People] = peopleData
}
Champ de texte
@ObservedObject var store = PeopleAllData()
List{
ForEach(store.peopleStore){ item in
HStack {
TextField("person Name", text: item.name) //Error:- Cannot convert value of type 'String' to expected argument type 'Binding<String>'
Button(action: {}) {
Image(systemName: "minus.circle")
.foregroundColor(.red)
}
}
}
}
.frame(width: screen.width, height: screen.height)
Réponses
1 Asperi Oct 22 2020 at 23:42
Vous devez Bindingmettre en réseau l'élément via ObservedObject, comme ci-dessous
ForEach(store.peopleStore.indices, id: \.self){ i in
HStack {
TextField("person Name", text: $store.peopleStore[i].name)