gpt4 book ai didi

ios - 在 SwiftUI 中从 @ObservedObject 获取更新的值

转载 作者:行者123 更新时间:2023-12-01 16:13:25 26 4
gpt4 key购买 nike

我试图在用户登录时更改 View ,即 已认证 中更新认证类,但它永远不会获得新的值(value),我不确定我是否正确理解了一切。

认证

class Authentication: ObservableObject{

@Published var email: String = ""
@Published var password: String = ""
@Published var isAuthenticated : Bool = false

func login(){
AppDelegate._bc.authenticateEmailPassword(email,
password: password,
forceCreate: false,
completionBlock: onAuthenticate,
errorCompletionBlock: onAuthenticateFailed,
cbObject: nil)
}

func onAuthenticate(serviceName:String?, serviceOperation:String?, jsonData:String?, cbObject: NSObject?) {

/............./

UserDefaults.standard.set(true, forKey: "HasAuthenticated")
self.isAuthenticated.toggle()
print("Login DONE!")
}
}

到目前为止一切正常,用户通过身份验证,它打印“登录完成!”它会更新 已认证 值为真。

但在 授权查看 它没有收到新值

授权查看
struct AuthView: View {

@ObservedObject var auth = Authentication()

var body: some View {
NavigationView{
VStack{
/............./

LoginView()

NavigationLink(destination: ProfileView(), isActive: $auth.isAuthenticated) {
Text("")
}
}
}
}
}

在这里我称之为 登录 功能

登录查看
struct LoginView: View{

@ObservedObject var auth = Authentication()

var body: some View {
VStack(){
Button(action: {
self.auth.login()
}) {
LoginButtonContent(state: "Login")
}
}
}
}

最佳答案

当你说

@ObservedObject var auth = Authentication()

...在两个不同的 View 中,它们是两个不同的身份验证对象。一个发生的事情不会影响另一个发生的事情。

如果您的目标是在 View 之间共享单个身份验证对象,则需要 @EnvironmentObject .

关于ios - 在 SwiftUI 中从 @ObservedObject 获取更新的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com