如何在 SwiftUI 中使用网络调用的数据填充 TextFields?

Sha*_*jon 5 swift swiftui

我从 API 调用获取用户个人资料信息,并希望将现有数据(如姓名、性别等)填充到我的用户个人资料字段中。但是,我不知道如何分配sfullName的状态变量( )TextField。以下代码是完整表单视图的子视图。我在 上进行网络呼叫parent view .onAppear{}。这是我的代码:

import SwiftUI

struct FormPartOneView: View {
    @State var fullName: String = ""

    @ObservedObject var userProfile = UserProfileViewModel()

    var body: some View {
        GeometryReader { geometry in
            VStack {
                TextField("Full Name", text: self.$fullName)
                    .padding(.horizontal)
            }
            .font(.system(size: 13))
            .frame(width: geometry.size.width/1.2, height: 40)
            .overlay(
                RoundedRectangle(cornerRadius: 5)
                    .stroke(Color("Border2"), lineWidth: 1)
            )
            .onAppear {
                self.userProfile.fetchWithAF()
            }
        }
    }
}

struct FormPartOneView_Previews: PreviewProvider {
    static var previews: some View {
        FormPartOneView()
    }
}
Run Code Online (Sandbox Code Playgroud)

下面的代码包含来自解码的 json 数据的全名:

self.userProfile.userProfileModel?.payload[0].fullName ?? ""
Run Code Online (Sandbox Code Playgroud)

所以我想知道如何将全名填充到TextField表单中的全名中。

这是表单视图:

用户资料更新表

Asp*_*eri 2

如果我正确理解了你的模型,你可以在.onReceive修改器中设置它,比如

.onAppear {
    self.userProfile.fetchWithAF()
}
.onReceive(self.userProfile.$userProfileModel) { model in
    self.fullName = model?.payload[0].fullName ?? ""
}
Run Code Online (Sandbox Code Playgroud)