将 `environmentObject` 数据传递给另一个类单例

问题描述

我有一个保存一些数据的 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
    }

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

解决方法

在你的单例中你有一个新的 UserManager(),它不同于 SceneDelegate "@StateObject var userManager ...", 这可能就是为什么它不像你期望的那样工作。 在你的 SceneDelegate 中试试这个:

@StateObject var userManager = UserModelAPI.shared.userManager

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...