如何解决无法将“字符串”类型的值转换为预期的参数类型“绑定<字符串>”
我是SwiftUi的新手,但遇到一个我无法修复的错误。 基本上,我想在SettingsView中更改AB类的名称属性。
此外,我还有一些问题,希望任何人都能回答。
- 当我的User类中已有@Published属性时,是否必须使AB类成为具有@Published属性的ObservableObject?
- AB类应该是结构吗?我正在将User类用作EnvironmentObject
class User: ObservableObject {
@Published var name: String
...
@Publsihed var ab: [AB]
@Published var currentAb: AB?
internal init(name: String,ab: [AB]) {
self.name = name
self.ab = ab
self.currentAb = ab.first
}
}
class AB: ObervableObject {
@Published var name: String
...
}
由于TextField(“新名称”,文本:$ user.currentAb.wrappedValue.name),我在这里收到错误消息。
struct SettingsView: View {
@EnvironmentObject var user: User
var body: some View {
Form { //Error: Unable to infer complex closure return type; add explicit type to disambiguate
Section(header: Text("")) {
TextField("new name",text: $user.currentAb.wrappedValue.name) // <- Error is shown here
.textFieldStyle(RoundedBorderTextFieldStyle())
}
}
}
谢谢。
解决方法
最好将其分成不同的视图,例如
var body: some View {
Form {
Section(header: Text("")) {
if user.currentAb != nil {
SomeNameView(vm: user.currentAb!)
} else {
Text("any holder view here")
}
}
}
}
和单独的视图
struct SomeNameView: View {
@ObservedObject var vm: AB
var body: some View {
TextField("new name",text: $vm.name)
.textFieldStyle(RoundedBorderTextFieldStyle())
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。