0Pricing
Swift Academy · 강의

$binding을 사용한 투영 값

$ 접두사를 통해 추가 기능을 제공하도록 projectedValue를 노출합니다.

$binding을 사용한 투영 값은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

투영된 값(`$`으로 접근)은 프로퍼티 래퍼에 보조 인터페이스를 제공하며, SwiftUI의 `@State`와 `@Published`가 `Binding` 및 `Publisher`를 노출하는 데 사용됩니다.

projectedValue 추가

```swift @propertyWrapper struct Toggle { var wrappedValue: Bool = false var projectedValue: String { wrappedValue ? "ON" : "OFF" } } struct Model { @Toggle var active } var m = Model() print(m.$active) // "OFF" — projected value accessed with $ ```

projectedValue의 형식

투영된 값은 어떤 형식이든 될 수 있습니다. `Binding`, `Publisher`, `String` 또는 사용자 정의 형식이 될 수 있습니다. SwiftUI의 `@State`는 양방향 데이터 흐름을 가능하게 하는 `Binding`을 투영합니다.

바인딩 투영 예제

```swift // @State projects Binding: @State var isOn = false Toggle(isOn: $isOn) // $isOn is Binding ```

사용자 정의 바인딩 투영

```swift @propertyWrapper struct Validated { var wrappedValue: String var projectedValue: Bool { !wrappedValue.isEmpty } } struct Form { @Validated var email = "" } var f = Form() f.email = "hi@example.com" print(f.$email) // true — projected Bool ```

@Published 투영

```swift class VM: ObservableObject { @Published var score = 0 } let vm = VM() let cancellable = vm.$score // Publisher .sink { print("Score: \($0)") } vm.score = 10 // "Score: 10" ```

래퍼 내부에서 projectedValue에 접근하기

```swift @propertyWrapper struct History { private var current: T private(set) var projectedValue: [T] = [] var wrappedValue: T { get { current } set { projectedValue.append(current); current = newValue } } init(wrappedValue: T) { current = wrappedValue } } ```

History 래퍼 사용하기

```swift struct Counter { @History var count = 0 } var c = Counter() c.count = 1; c.count = 5; c.count = 3 print(c.$count) // [0,1,5] — history of old values ```

$ 구문 구분

```swift struct Form { @State var text = "" var body: some View { TextField("Enter", text: $text) // $text is Binding } } // text → String (wrappedValue) // $text → Binding (projectedValue) ```

설계 시 고려 사항

• `projectedValue`는 선택 사항이며 보조 인터페이스가 필요할 때만 추가합니다 • 형식은 `wrappedValue`와 완전히 달라도 됩니다 • 호출 위치에서 `$`를 사용하여 투영된 값에 접근합니다 • 투영된 값은 컴바인 게시자와 SwiftUI 바인딩에 유용합니다

빠른 확인

프로퍼티 래퍼의 `projectedValue`에는 어떻게 접근하나요?

복습

핵심 내용: • `projectedValue`는 `$`를 통해 래퍼에 보조 API를 제공합니다 • 어떤 형식이든 될 수 있습니다 — 바인딩, 게시자, 불리언, 배열 • `@State`는 `Binding`을 투영하고, `@Published`는 `Publisher`를 투영합니다 • 본문과 호출 위치에서 `$propertyName`으로 접근합니다 • 두 번째 인터페이스가 실질적인 가치를 더할 때만 추가합니다 다음: @Published와 컴바인

자주 묻는 질문

“$binding을 사용한 투영 값” 강의는 무료인가요?

네 — “$binding을 사용한 투영 값” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“$binding을 사용한 투영 값”에서 뭘 배우나요?

$ 접두사를 통해 추가 기능을 제공하도록 projectedValue를 노출합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“$binding을 사용한 투영 값” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 사용자 정의 프로퍼티 래퍼 만들기
  2. $binding을 사용한 투영 값
  3. Combine의 @Published와 관찰
  4. 여러 프로퍼티 래퍼 조합하기
← Swift Academy(으)로 돌아가기