본문 바로가기
Programming/Swift

[Swift] Optional Unwrapping과 Nil Coalescing

by Eisen Sophie 2020. 10. 30.

Optional Unwrapping방법에는 다음과 같은 것들이 있다.

1. Forced Unwrapping

2. Optional Binding (if let, guard 방법)

 

1. Forced Unwrapping

이 방법은 가장 간단하게 옵셔널의 값을 추출하는 방법이다.

그러나 가장 위험한 방법이기도 하다. Run Time 오류가 일어날수 있기 때문이다.

그렇기에 왠만하면 사용하지 않는 것이 옳다.

 

var myNumber: Int? = 1

print(myNumber) // optional(1)
print(myNumber!) // 1  //Forced Unwrapping 방법

 

 

2. Optional Binding

이 방법은 if let이나 guard를 사용하여서

해당 값이 nil인지 아닌지를 판별하여서 옵셔널이 아닌 형태로 사용을 가능하게 해준다.

 

if let 방법

var myNumber: String? = "myNumber"

if let firstletter = myNumber?.first{
    print(firstletter) // m
} else {
    print("nil")
}

 

guard 방법

var myNumber: String? = "myNumber"

func printFirstLetter(){
    guard let firstletter = myNumber?.first else {
        print("nil")
        return
    }
    print(firstletter)
}

printFirstLetter() // m

 

Nil Coalescing은 만약 해당 값이 nil이라면,

어떤 값을 default로 주는 것이다.

 

var myName: String? = "Park"
var yourName: String? = nil

var passedMyName = myName ?? "Kim"
var passedYourName = yourName ?? "Lee"

print(passedMyName)		//Park
print(passedYourName)	//Lee

passedYourName같은 경우 내부에 nil이 있었기에,

yourName ?? "Lee" 에서 "Lee"라고 설정 되어 있는 것을 passedYourNamed으로 넣어준다.