微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将 `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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。