Reputation: 840
I have this App structure, where I need to initialize appearancesStore and behavioursStore with userManager.
But I get the error Escaping auto closure captures mutating 'self' parameter
and Variable 'self.appearancesStore' captured by a closure before being initialized
.
I have tried some different methods of doing this, but it all failed. Do anyone have a suggestion of how to do this?
@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)
}
}
}
Upvotes: 5
Views: 1656
Reputation: 257493
Try the following
@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)
}
}
}
Upvotes: 8