옵셔널체이닝
작성일
옵셔널체이닝
struct Friend {
let nickName: String
let person: Person?
}
struct Person {
let name: String
let pet: Pet?
}
struct Pet {
let name: String?
let kind: String
}
let pet = Pet(name: "개냥이", kind: "고양이")
let person = Person(name: "최재권", pet: pet)
let friend = Friend(nickName: "취준생", person: nil)
// 이런식으로 옵셔널이 연쇄적으로 있을때
if let person = friend.person {
if let pet = person.pet {
if let petName = pet.name {
print("petName: \(petName)")
}
}
}
// 옵셔널 체이닝
// 한번만 언랩핑하고 나머지는 옵셔널 처리가 가능하다.
if let petName = friend.person?.pet?.name{
print("petName: \(petName)")
} else {
// person, pet, name 중 하나가 nil이면
print("펫 이름이 없어요")
}
출력
펫 이름이 없어요