Menu
Coddy logo textTech

환경 객체

Coddy Swift 여정의 SwiftUI 입문 섹션에 포함된 레슨. 50개 중 41번째.

필요한 뷰에 도달할 때까지 모든 뷰를 거쳐 객체를 전달하는 일은 번거로워집니다. 대신 객체를 환경에 넣으면, 그 아래에 있는 모든 뷰에서 객체를 읽을 수 있습니다:

@StateObject private var cart = Cart()

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

더 아래에 있는 뷰는 초기값 없이 @EnvironmentObject를 사용하여 필요한 것을 선언합니다.

struct CartBadge: View {
    @EnvironmentObject var cart: Cart

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

ShopView는 장바구니를 전혀 언급하지 않지만, 그 안의 CartBadge는 여전히 동일한 객체를 받습니다. 위쪽의 뷰에서 .environmentObject를 제공하지 않으면 CartBadge가 표시될 때 앱이 오류와 함께 중지됩니다.

challenge icon

챌린지

중급

CartBadge는 공유된 장바구니의 수량을 표시해야 합니다. .environmentObject를 사용하여 VStackcart를 제공하고, CartBadge@EnvironmentObject로 이를 읽도록 변경하세요. 한 번 탭한 후 배지에는 1 in cart가 표시되어야 합니다.

직접 해보기

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

SwiftUI 입문의 모든 레슨

직접 연습해 보세요: Swift 플레이그라운드