View SwiftUI访问在SCSTRUCT标头中传递的视图数据

View SwiftUI访问在SCSTRUCT标头中传递的视图数据,view,graphql,swiftui,parameter-passing,View,Graphql,Swiftui,Parameter Passing,如何将数据传递给视图并在“标题”中直接使用它?我制作的所有教程都是访问视图主体中的数据-这很好-但是我想从UpdateAccountView调用GraphQL方法,然后根据结果渲染视图 传递数据的我的类: class Account { var tel: Int init(tel: Int) { self.tel = tel } } 初始化类的主要视图(简化-通常“tel”来自输入) 我调用的视图执行请求并基于结果调用下一个视图 UpdateA

如何将数据传递给视图并在“标题”中直接使用它?我制作的所有教程都是访问视图主体中的数据-这很好-但是我想从UpdateAccountView调用GraphQL方法,然后根据结果渲染视图

传递数据的我的类:

class Account {
    var tel: Int
    
    init(tel: Int) {
        self.tel = tel
    }
}
初始化类的主要视图(简化-通常“tel”来自输入)

我调用的视图执行请求并基于结果调用下一个视图 UpdateAccount将tel:Int作为参数。 这就是问题所在。我无法从传递的数据访问account.tel

struct UpdateAccountView: View {
     var account: Account
     @ObservedObject private var updateAccount: UpdateAccount = UpdateAccount(tel: account.tel)

     @ViewBuilder
     var body: some View {
        if updateAccount.success {
              AccountVerifyView()
        } else {
              ContentView()
        }
     }
} 
错误:

无法在属性初始值设定项中使用实例成员“帐户”;属性初始值设定项在“self”可用之前运行

更新方法(GraphQL):

我看到有一个EnvironmentObject,但据我所知,该变量在全局范围内可用,这在这里是不必要的。
谢谢您的帮助。

您可以在explicit
init
中创建它,如

struct UpdateAccountView: View {
     var account: Account
     @ObservedObject private var updateAccount: UpdateAccount  // << declare

     init(account: Account) {
        self.account = account
        self.updateAccount = UpdateAccount(tel: account.tel)   // << here !!
     }

     // ... other code
}
struct UpdateAccountView:View{
var账户:账户
@ObservedObject私有变量updateAccount:updateAccount//
class UpdateAccount: ObservableObject {
   @Published var success: Bool
   init(tel: Int){
       self.success = false
       update(tel: tel)
    
   }
   func update(tel: Int){
      Network.shared.apollo.perform(mutation: UpdateAccountMutation(tel: tel)) { result in
      switch result {
      case .success(let graphQLResult):
        self.success = graphQLResult.data!.updateAccount.success
        
      case .failure(let error):
        print("Failure! Error: \(error)")
        self.success = false
        }
      }
}
struct UpdateAccountView: View {
     var account: Account
     @ObservedObject private var updateAccount: UpdateAccount  // << declare

     init(account: Account) {
        self.account = account
        self.updateAccount = UpdateAccount(tel: account.tel)   // << here !!
     }

     // ... other code
}