在循环内填充和绑定字典值

问题描述

这是我的Manager类的基本内容,它可以调用以检索要放入TypeModel中的数据。

class Manager: ObservableObject {
    
    @Published var Type: TypeModel?
    
    
    func GetType(_ id: String){
        **Makes the network call to populate the TypeModel**
    } 
}    

这是具有DataModel的TypeModel。

struct TypeModel: Codable {
    let id: String
    
    let name: String

    var data: [DataModel] = []
} 

这是应该在我的视图内的TextField中显示的数据模型。

struct DataModel : Codable,Identifiable {
    let id: UUID
    
    let text: String
    
    let placeholder: String?
}

这是将使用管理器类进行调用以获取TypeModel数据的视图。我在此视图之前从一个视图传入管理器,因此它已被初始化。我还从该视图之前的视图中传入了Id属性。

struct ItemView: View {
        @ObservedObject var manager: Manager
        @State var answers = [UUID:String]()
        
        let Id : String
        
        var body: some View {
            VStack {
                if let type = manager.Type{
                    ForEach(type.data){ d in
                        Text(d.text)
                            .bold()
                            .frame(maxWidth: .infinity,alignment: .leading)
                        TextField(d.placeholder ?? "",text: $answers[d.id])
                                .textFieldStyle(RoundedBorderTextFieldStyle())
                        
                    }
                }
                Spacer()
            }.padding()
            .onAppear{
                manager.GetType(Id)
            }
        }
    }

关于这个设置,我有两个问题。

  1. 我正在尝试在视图通过type.data时填充答案字典,但是我无法在视图的正文部分中修改属性。我需要使用返回的Datamodel ID填充字典,该值将是在文本字段中键入的值。这使我想到了第二个问题。

  2. 我试图将答案词典的值绑定到在文本字段中输入的内容,但在此行上( TextField(d.placeholder ??“”,文本:$ answers [ d.id]) )我收到此错误( 无法将类型'Binding '的值转换为预期的参数类型'Binding ' )。我得到这个错误是因为作为字典,它不知道该值是否会被填写,因此使其成为可选的。他们有办法解决吗?

如果他们是我可以做的更好的方法,请让我知道我仍然对swiftUI陌生。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...