[swift] 45. 옵셔널 체이닝

RudinP·2023년 10월 6일
0

Study

목록 보기
64/227

만약 a 객체 안에 옵셔널인 b객체가 있고, b객체 안에 또 옵셔널인 c객체가 있다면 어떡해야할까.

struct Friend{
	let person: Person?
}

struct Person{
	let name: String
    let pet: Pet?
}

struct Pet{
	let name: String?
    let kind: String
}

통상적으로 생각하면 다음과 같이 if let을 반복하면 된다.

if let person = friend.person{
	if let pet = person.pet{
    	if let petName = pet.name{
        	...
        }
    }
}

다른 방법

  • 번거롭다
if let person = friend.person,
	let pet = person.ppet,
    let petName = pet.name{
    	...
}

옵셔널 체이닝

// 하나라도 nil이면 else 실행
if let petName = friend.person?.pet?.name{
	...
} else{
	...
}

guard let은 반대로 nil이면 실행, 아니면 else

func getPetName(){
	guard let petName = friend.person?.pet?.name{
    	print("petName : 없음")
        return
    } else {
    	...
    }
}
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글