问题描述
我有一个保存一些数据的 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