BLACK FRIDAY: Save 50% on all my Swift books and bundles! >>

SOLVED: Use a @AppStorage data globally from @main App{} ?

Forums > SwiftUI

Is there a way to set a global var that can be used in all views without passing or setting in each View?

Like , is this possible and if so, then how do I reference the "settings" var from child views?

Not worried about pre SwiftUI 2.0


@main
struct MultiAccountAppApp: App {

  @AppStorage("settings") private var settings: Data = Data()

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

3      

This is exactly what the SwiftUI environment is for. Set an environment value on a View and it will automatically be available to all that View's view hierarchy. So if you set it on ContentView here at the root of your app, then every View in your app will have access to it.

See here for more info: What is the @Environment property wrapper?

AppStorage would work (depending on the data you have), but it requires hitting the UserDefaults every time to save or retrieve a value.

3      

Save 50% in my WWDC sale.

SAVE 50% All our books and bundles are half price for Black Friday, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.

Save 50% on all our books and bundles!

Archived topic

This topic has been closed due to inactivity, so you can't reply. Please create a new topic if you need to.

All interactions here are governed by our code of conduct.

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.