0

我有一个observableObject包含一些数据的类。

可观察类

class UserManager:ObservableObject {
    @Published
    var profile:userProfileModel = userProfileModel()
    
    @Published
    var settings:Settings = Settings()
    
    @Published var currentView:String
    @Published var isLoggedIn:Bool

我创建并将其SceneDelegate作为environmentObject视图层次结构传递。

场景委托

@StateObject var userManager = UserManager()
let contentView = loginRoot().environmentObject(userManager)

问题是我有一个与服务器同步的单例类,我需要更新UserManager类中的数据。

单例类

public class UserModelAPI {
    @ObservedObject var userManager: UserManager = UserManager()
    public static let shared = UserModelAPI()
    
    func syncServer() {
         userManager.isLoggedIn = true
    }

但它根本不起作用。我无法发布单例类的更改。

4

1 回答 1

0

在您的单例中,您有一个新的 UserManager(),它与 ​​SceneDelegate“@StateObject var userManager ...”不同,这可能就是它无法按预期工作的原因。在你的 SceneDelegate 中试试这个:

@StateObject var userManager = UserModelAPI.shared.userManager
于 2021-06-20T03:17:42.043 回答