Incapaz de usar combinar com TextField
Oct 23 2020
Estou tentando passar dados para TextField usando combine. criando um modelo de dados e usando observableObject, mas quando eu uso em textField ele me mostra o erro. Não é possível converter o valor do tipo 'String' no tipo de argumento esperado 'Binding <String>' . Não consigo entender.
modelo de dados
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
}
Campo de texto
@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)
Respostas
1 Asperi Oct 22 2020 at 23:42
Você precisa Bindingdo elemento do array via ObservedObject, como abaixo
ForEach(store.peopleStore.indices, id: \.self){ i in
HStack {
TextField("person Name", text: $store.peopleStore[i].name)
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino