Ios/Swift
[Swift] Optional Chaining 옵셔널 체이닝
okoo
2022. 6. 7. 09:56
반응형
안녕하세요 공부하는 개발자 입니다.
오늘의 포스팅은 Optional Chaining입니다.
개인적으로 가장 이해가 안되어 정리하는 개념 입니다.
옵셔널 체이닝이라는 개념은 옵셔널을 연달아 선언하는 것을 의미 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
struct Contacts {
var email: [String: String]
var address: String
}
struct Person {
var name: String
var contacts: Contacts
init(name: String, email: String) {
self.name = name
contacts = Contacts(email: ["home": email], address: "Seoul")
}
}
|
cs |
기본적인 설정입니다.
struct로 구조체를 생성하여 옵셔널 체이닝을 공부할 준비를 합니다.
1
2
3
|
var p = Person(name: "James", email: "swift@never,cin")
let a = p.contacts.address
a
|
cs |
이후 p를 선언하고 person에 name과 email를 넣어 구조체를 p에 담아 넣습니다.
이후 p.contacts.address처럼 선언 되어있는 부분이 옵셔널 체이닝 이라는 것인데
옵셔널 체이닝의 경우 p나 contacts, address중 optional이 있다면 반환 타입의 경우는 optional입니다.
그리고 반환 타입의 결정은 옵셔널 체이닝의 마지막 address에 결정이 됩니다.
또 하나의 규칙은 p나 contacts, address중에는 하나만 nil이 있다면 반환타입은 nil로 반환됩니다.
지금은 String타입이고 p나 contacts가 옵셔널인 경우 반환타입은 String?이 됩니다.
1
2
3
|
var optionalP: Person? = Person(name: "James", email: "swift@never,cin")
let b = optionalP?.contacts.address
b
|
cs |
b예시가 바로 중간에 옵셔널이 들어갔을 때 반환되는 값이 optional이 된다는 예시다.
이런식으로 b는 String?으로 적용이 되며 unwrapping이 되지 않은 상태로 반환이 됩니다.
부분적으로 이해가 된부분인지 자신은 없지만 이렇게 정리를 해보았습니다.
만약 이 글이 보신분들 중 지적할 사항이나 더 가르침이 있다면 댓글을 부탁드립니다.!
반응형