티스토리 뷰

반응형
옵셔널 체이닝에 대해 알아보겠습니다.
옵셔널 체이닝(Optional Chaining)
  • 옵셔널에 속해 있는 nil 일수도있는 프로퍼티, 메서드, 서브스크립트 등을 가져오나 호출할 때 사용할 수 있는 일련의 과정 
import Foundation

struct Person {
    let name: String
}

struct School {
    let name: String
    var person: Person?
}

var person = Person(name: "Lee")
var school = School(name: "Park", person: person ) 
print(school.person) // Optional(main.Person(name: "Lee"))
  • 아래와 같이 사용하면 오류가 뜬다.
import Foundation

struct Person {
    let name: String
}

struct School {
    let name: String
    var person: Person?
}

var person = Person(name: "Lee")
var school = School(name: "Park", person: person ) 
print(school.person)
print(school.person.name) // 오류가 뜸.
  • 이유는 person의 옵셔널이 언래핑 되어야하기 때문입니다.
  • 해결방법은 name의 접근하기전에 옵셔널을 언래핑하면 됩니다.
  • ?로 옵셔널 체이닝을 하면 접근한 상태로 항상 옵셔널에 감싸져 있습니다, 옵셔널을 언래핑하고 싶으면 옵셔널 바인딩을 하면 됩니다.
  • !로 옵셔널 체이닝을 하면 옵셔널 프로퍼티를 강제언래핑을 하기 때문에 옵셔널 값으로 감싸져 있지 않습니다.
  • 내부 프로퍼티에 접근할 때 옵셔널 체이닝을 사용하면 쉽게 값에 접근할 수 있습니다.
import Foundation

struct Person {
    let name: String
}

struct School {
    let name: String
    var person: Person?
}

var person = Person(name: "Lee")
var school = School(name: "Park", person: person ) 
print(school.person) // Optional(main.Person(name: "Lee"))
print(school.person?.name) // Optional("Lee")
print(school.person!.name) // Lee
반응형

'Swift > 문법' 카테고리의 다른 글

Swift String(문자열) 쉽게 다루기  (0) 2022.06.14
Swift Dictionary  (0) 2022.04.21
Swift 에러 처리  (0) 2022.02.10
Swift 고차함수  (0) 2022.02.09
Swift Array(배열) 정리  (0) 2022.02.08
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함