使用另一个 StateObject 初始化 StateObject

Iva*_*old 4 swiftui

我有这个应用程序结构,我需要使用 userManager 初始化appearancesStore 和behaviorsStore。但我收到错误Escaping auto closure captures mutating 'self' parameter并且Variable 'self.appearancesStore' captured by a closure before being initialized.

我尝试了一些不同的方法来做到这一点,但都失败了。有人建议如何做到这一点吗?

@main
struct DuneApp: App {
    @StateObject var userManager = UserManager()
    @StateObject var appearancesStore: AppearancesStore
    @StateObject var behavioursStore: BehavioursStore

    init() {
        _appearancesStore = StateObject(wrappedValue: AppearancesStore(manager: self.userManager))
        _behavioursStore = StateObject(wrappedValue: BehavioursStore(manager: self.userManager))
    }

    var body: some Scene {
        WindowGroup {
            AuthenticateView()
                .environmentObject(userManager)
                .environmentObject(appearancesStore)
                .environmentObject(behavioursStore)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Asp*_*eri 7

尝试以下操作

@main
struct DuneApp: App {
    @StateObject var userManager: UserManager
    @StateObject var appearancesStore: AppearancesStore
    @StateObject var behavioursStore: BehavioursStore

    init() {
        let userManager = UserManager()

        _userManager = StateObject(wrappedValue: userManager)
        _appearancesStore = StateObject(wrappedValue: AppearancesStore(manager: userManager))
        _behavioursStore = StateObject(wrappedValue: BehavioursStore(manager: userManager))
    }

    var body: some Scene {
        WindowGroup {
            AuthenticateView()
                .environmentObject(userManager)
                .environmentObject(appearancesStore)
                .environmentObject(behavioursStore)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)