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)