Menu
Coddy logo textTech

Objetos de entorno

Parte de la sección Introducción a SwiftUI del Journey de Swift de Coddy. Lección 41 de 50.

Pasar un objeto por cada vista hasta llegar a la que lo necesita se vuelve tedioso. En su lugar, colócalo en el entorno, y cualquier vista descendiente podrá leerlo:

@StateObject private var cart = Cart()

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

Una vista más abajo declara lo que necesita con @EnvironmentObject, sin un valor inicial:

struct CartBadge: View {
    @EnvironmentObject var cart: Cart

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

ShopView nunca menciona el carrito, pero CartBadge dentro de ella sigue obteniendo el mismo objeto. Si ninguna vista superior se lo proporciona mediante .environmentObject, la aplicación se detiene con un error cuando se muestra CartBadge.

challenge icon

Desafío

Intermedio

CartBadge debería mostrar el recuento del carrito compartido. Proporciona cart a VStack con .environmentObject y cambia CartBadge para que lo lea con @EnvironmentObject. La insignia debe leer 1 in cart después de un toque.

Pruébalo tú mismo

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Introducción a SwiftUI

Practica por tu cuenta: Playground de Swift