티스토리 뷰
반응형
옵셔널 체이닝에 대해 알아보겠습니다.
옵셔널 체이닝(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
링크
TAG
- UIButton
- Alamofire
- Firebase
- Android
- gcd
- Observable
- subscript
- NavigationLink
- remote config
- autolayout
- 웹뷰
- dictionary
- 다크모드
- WebView
- UIScrollView
- Realtime Database
- SwiftLint
- ios
- swipe
- Java
- 문자열
- UITabBarController
- 라이트모드
- github
- string
- LazyHStack
- Swift
- Apple
- SwiftUI
- RxSwift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함