class Form {
var id = UUID()
var name: String = ""
var fields: [FormField] = []
}
class FormField {
var id = UUID()
var name: String = ""
}
struct LogCustomizationView: View {
@State var form: Form
var body: some View {
VStack {
ForEach(form.fields.indices) { idx in
TextField("Name", text: self.$form.fields[dynamicMember: idx])
}
}
}
}
有问题的行是:
TextField("Name", text: self.$form.fields[dynamicMember: idx])
我遇到的第一个错误是
Missing argument label 'dynamicMember:' in subscript
所以我添加了dynamicMember:
,上面是这样显示的。现在我得到的错误是:
Cannot convert value of type 'Int' to expected argument type 'WritableKeyPath<_, _>'
答案 0 :(得分:1)
SwiftUI错误可能真的很模糊。
您正在有效地尝试将FormField
对象绑定到Binding<String>
,而该对象既不采用BindableObject
也没有采用name
ivar(您想绑定)附属的发布者(@Published
)。
我猜您想将name
ivar绑定到TextField:
ForEach(form.fields.indices) { idx in
TextField("Name", text: self.$form.fields[idx].name)
}