I want to have different accounts in an app and save, which one was last used. To do this, I worked with UserDefaults. I also want to share the accounts all over my app in different views. Using EnvironmentObject works just fine for building and running the app, but the preview in canvas does not work.
import SwiftUI
import Combine
final class UserData: ObservableObject {
@Published var currentUser: User = userData.first{$0.id == UserDefaults.standard.integer(forKey: "currentUser")}! {
didSet {
UserDefaults.standard.set(self.currentUser.id, forKey: "currentUser")
}
}
@Published var user = userData
}
import SwiftUI
struct ShowTrainingView: View {
@State var showAccounts = false
@EnvironmentObject var userData: UserData
var body: some View {
NavigationView {
Text("")
.navigationBarTitle("Trainieren")
.navigationBarItems(trailing:
Button(action: {
self.showAccounts.toggle()
print("button pressed")
}) {
Image(systemName: "person")
.imageScale(.large)
})
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ShowTrainingView()
.environmentObject(UserData())
}
}
Does anyone know how to fix this?