Optional Chaining
작성일
Optional Chaining
Contacts구조체는 이메일과 주소를 저장하고, Person구조체는 이름과 주소정보를 저장한다.
그리고 안에서 초기화를 시켜준다.
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(eamil.: ["home": email], address: "Seoul")
}
}
var p = Person(name: "James", email: "swift@example.com")
let a = p.contacts.address
var optionalP: Person? = Person(name: "James", email: "swift@example.com")
let b = optionalP.contacts.address // -> error발생
error가 발생하는 이유는 무엇일까?
let b = optionalP.contacts.address // -> error발생
이 코드를 보면, 언매핑을 해야한다. 따라서
let b = optionalP?.contacts.address // -> error해결
이렇게 언매핑을 해줘야한다.
코드에 하나라도 Optional이 있으면 그 코드는 Optional타입이 되어버린다.