Menu
Coddy logo textTech

Oggetti dell’ambiente

Fa parte della sezione Introduzione a SwiftUI del percorso Swift di Coddy. Lezione 41 di 50.

Passare un oggetto attraverso ogni vista fino a quella che ne ha bisogno diventa noioso. Inseriscilo invece nell’ambiente, così qualsiasi vista sottostante potrà leggerlo:

@StateObject private var cart = Cart()

var body: some View {
    NavigationStack {
        ShopView()
    }
    .environmentObject(cart)
}

Una vista più avanti dichiara ciò di cui ha bisogno con @EnvironmentObject, senza un valore iniziale:

struct CartBadge: View {
    @EnvironmentObject var cart: Cart

    var body: some View {
        Text("\(cart.count) in cart")
    }
}

ShopView non menziona mai il carrello, ma CartBadge al suo interno riceve comunque lo stesso oggetto. Se nessuna vista sopra di essa lo fornisce con .environmentObject, l'app si interrompe con un errore quando viene mostrato CartBadge.

challenge icon

Sfida

Medio

CartBadge deve mostrare il conteggio del carrello condiviso. Fornisci cart a VStack con .environmentObject e modifica CartBadge in modo che lo legga con @EnvironmentObject. Dopo un tocco, il badge deve mostrare 1 in cart.

Provalo tu

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Introduzione a SwiftUI

Esercitati da solo: Playground SwiftUI