0Pricing
Swift Academy · Lección

@EnvironmentObject para el estado compartido

Inyecte modelos compartidos en jerarquías profundas de vistas sin prop-drilling.

@EnvironmentObject para el estado compartido es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Introducción

`@EnvironmentObject` inyecta un modelo compartido en cualquier vista de la jerarquía sin tener que pasarlo explícitamente; es ideal para estados de toda la aplicación, como la autenticación del usuario o la configuración del tema.

Inyectar en la jerarquía

```swift struct App: App { @StateObject var authModel = AuthModel() var body: some Scene { WindowGroup { RootView().environmentObject(authModel) } } } ```

Consumir con @EnvironmentObject

```swift struct ProfileView: View { @EnvironmentObject var auth: AuthModel var body: some View { Text("Hello, \(auth.username)!") } } // No init parameter needed — auto-injected from environment ```

Error por falta de EnvironmentObject

Si utiliza `@EnvironmentObject` sin inyectar el objeto, la aplicación se bloquea durante la ejecución: ``` Fatal error: No ObservableObject of type AuthModel found. A View.environmentObject(_:) must be attached to ancestor. ```

EnvironmentObject en las vistas previas

```swift #Preview { ProfileView().environmentObject(AuthModel.mock) } ```

Varios EnvironmentObjects

```swift RootView() .environmentObject(authModel) .environmentObject(cartModel) .environmentObject(themeModel) ``` Cada tipo se identifica por su tipo, por lo que no hay conflictos de nombres.

Comparación: @EnvironmentObject frente a @ObservedObject

• `@ObservedObject` — parámetro explícito en el inicializador, dependencias claras • `@EnvironmentObject` — sin parámetro en el inicializador, inyección implícita Prefiera `@ObservedObject` para mantener la claridad; utilice `@EnvironmentObject` para estados realmente globales.

Inyección en vistas anidadas

```swift View A (.environmentObject(model)) └── View B (@EnvironmentObject var model) ✓ └── View C (@EnvironmentObject var model) ✓ — inherits ```

@Environment para valores del sistema

No lo confunda con `@Environment` (sin el sufijo Object): ```swift @Environment(\.colorScheme) var scheme // system dark/light @Environment(\.locale) var locale // current locale ```

Patrón del mundo real: AppModel

```swift @Observable class AppModel { var isLoggedIn = false var username = "" var cart: [Item] = [] } ``` Enfoque moderno: inyectar un único modelo `@Observable` de la aplicación en la raíz.

Comprobación rápida

¿Qué ocurre si utiliza `@EnvironmentObject` sin inyectarlo?

Resumen

Puntos clave: • `.environmentObject(model)` inyecta el modelo en todo el subárbol • `@EnvironmentObject var m: ModelType` — se inyecta automáticamente, sin parámetro • Falta de inyección = bloqueo durante la ejecución • Inyéctelo siempre también en las vistas previas • `@Environment(\.key)` para valores del sistema (una API diferente) Siguiente: fuente única de la verdad.

Preguntas frecuentes

¿La lección «@EnvironmentObject para el estado compartido» es gratis?

Sí — el texto completo de «@EnvironmentObject para el estado compartido» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «@EnvironmentObject para el estado compartido»?

Inyecte modelos compartidos en jerarquías profundas de vistas sin prop-drilling. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «@EnvironmentObject para el estado compartido»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. @Binding: flujo de datos bidireccional
  2. @ObservableObject y @StateObject
  3. @EnvironmentObject para el estado compartido
  4. Fuente única de la verdad y flujo unidireccional
← Volver a Swift Academy