0Pricing
Swift Academy · 강의

옵셔널 체이닝 ?. 연산자

오류를 일으키지 않고 옵셔널의 메서드를 호출하고 속성에 접근합니다.

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

환영합니다

옵셔널 체이닝을 사용하면 옵셔널 체인을 따라 메서드를 호출하고 프로퍼티에 접근하며 첨자를 사용할 수 있어 안전합니다. 체인의 어느 연결 지점이라도 nil이면 충돌 없이 전체 표현식이 nil을 반환합니다.

?. 연산자

```swift struct Address { var city: String } struct Person { var address: Address? } let alice = Person(address: Address(city: "Istanbul")) let bob = Person(address: nil) print(alice.address?.city) // Optional("Istanbul") print(bob.address?.city) // nil ```

여러 단계 연결하기

체인은 원하는 만큼 깊게 만들 수 있습니다: ```swift struct Company { var ceo: Person? } let company = Company(ceo: alice) let city = company.ceo?.address?.city print(city ?? "Unknown") // "Istanbul" ``` `ceo` 또는 `address`가 nil이면 `city`는 nil이 됩니다.

체이닝으로 메서드 호출하기

옵셔널 체이닝을 통해 메서드를 호출할 수도 있습니다: ```swift var name: String? = "alice" let upper = name?.uppercased() // Optional("ALICE") name = nil let upper2 = name?.uppercased() // nil ``` 반환 타입이 옵셔널이 됩니다: `String`이 `String?`이 됩니다.

체이닝으로 첨자 사용하기

```swift var dict: [String: [Int]]? = ["scores": [10, 20, 30]] let first = dict?["scores"]?[0] // Optional(10) dict = nil let none = dict?["scores"]?[0] // nil ``` 첨자도 체인에서 프로퍼티 및 메서드와 동일하게 작동합니다.

체이닝은 옵셔널을 생성합니다

최종 결과가 옵셔널이 아니더라도 체이닝을 사용하면 결과가 옵셔널로 감싸집니다: ```swift struct Cat { var lives: Int = 9 } var cat: Cat? = Cat() let lives = cat?.lives // Int? not Int ``` 필요에 따라 `??`, `if let` 또는 `guard let`으로 값을 해제하십시오.

체이닝으로 값 설정

옵셔널 체이닝을 통해 프로퍼티를 설정할 수 있습니다: ```swift var profile: UserProfile? = UserProfile() profile?.name = "Alice" ``` `profile`에 값이 없으면 할당은 조용히 무시됩니다(충돌하지 않습니다).

반환값이 없는 메서드 호출

```swift var manager: SoundManager? manager?.play() // silently ignored if nil ``` 호출 결과는 `Void?`입니다. 값이 있으면 `()`, 옵셔널에 값이 없으면 `nil`을 반환합니다. 결과를 확인하여 호출이 실제로 실행되었는지 알 수 있습니다.

옵셔널 체이닝과 강제 언래핑 비교

```swift // Forced unwrap — crashes if nil: let city = alice.address!.city // Optional chaining — safe: let city = alice.address?.city ``` 항상 옵셔널 체이닝을 우선 사용하십시오. 값이 없을 수 없다고 확신하는 경우에만 `!`를 사용하십시오.

??와 결합해 기본값 사용

깔끔한 기본값 처리를 위해 옵셔널 체이닝 뒤에 `??`를 연결하십시오: ```swift let displayCity = user.profile?.address?.city ?? "Unknown City" let count = database?.records?.count ?? 0 ``` 전체 체인은 값으로 귀결되거나 기본값으로 대체됩니다.

확인 문제

옵셔널 체인의 연결 단계 중 하나라도 `nil`이면 전체 표현식은 무엇을 반환합니까?

요약

핵심 정리: • `?.`는 옵셔널의 프로퍼티에 안전하게 접근하고, 메서드를 호출하며, 서브스크립트를 사용합니다 • 어느 연결 단계에서든 값이 없으면 전체 체인은 값이 없음을 반환합니다 • 최종 값이 원래 옵셔널이 아니더라도 결과 타입은 항상 옵셔널입니다 • 안전한 접근과 기본값 패턴을 깔끔하게 결합하려면 `?.`와 `??`를 함께 사용하십시오 • 충돌을 피하려면 `!`보다 `?.`를 우선 사용하십시오 다음 주제: 암시적으로 언래핑되는 옵셔널

자주 묻는 질문

“옵셔널 체이닝 ?. 연산자” 강의는 무료인가요?

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

“옵셔널 체이닝 ?. 연산자”에서 뭘 배우나요?

오류를 일으키지 않고 옵셔널의 메서드를 호출하고 속성에 접근합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“옵셔널 체이닝 ?. 연산자” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. if let 및 guard let 바인딩
  2. 옵셔널의 Nil 병합과 삼항 연산자
  3. 옵셔널 체이닝 ?. 연산자
  4. 암시적으로 언래핑되는 옵셔널과 사용을 피해야 하는 경우
← Swift Academy(으)로 돌아가기