옵셔널 값 추출

손호준·2022년 6월 8일
0

swift

목록 보기
4/12

옵셔널 값 추출 방법

  1. Optional Binding - 옵셔널 바인딩
  2. Force Unwrapping - 강제 추출

Optional Binding

nil체크 + 안전한 값 추출 가능

/// Optional Binding///

func printName(_ name: String) {
    print(name)
}

var myName: String? = nil

//printName(myName)
// 전달되는 값의 타입이 다르기 때문에 컴파일 오류발생

if let name: String = myName {
    printName(name)
} else {
    print("myName == nil")
}


var yourName: String! = nil

if let name: String = yourName {
    printName(name)
} else {
    print("yourName == nil")
}

// name 상수는 if-let 구문 내에서만 사용가능
// 상수 사용범위를 벗어났기 때문에 컴파일 오류 발생
//printName(name)

// ,를 사용해 한 번에 여러 옵셔널을 바인딩 가능
// 모든 옵셔널에 값이 있을 때만 동작
myName = "nylonmask"
yourName = nil

if let name = myName, let friend = yourName {
    print("\(name) and \(friend)")
}
// yourName이 nil이기 때문에 실행되지 않음

yourName = "hana"

if let name = myName, let friend = yourName {
    print("\(name) and \(friend)")
}
// nylonmask and hana

Force Unwrapping

옵셔널의 값을 강제로 추출


/// Force Unwrapping ///

printName(myName!) // nylonmask 출력

myName = nil

//print(myName!)
// 강제추출시 값이 없으므로 런타임 오류 발생

yourName = nil

//printName(yourName)
// nil 값이 전달되기 때문에 런타임 오류발생

강제추출은 위험하므로, 안전한 옵셔널 바인딩을 사용하자

profile
Rustacean🦀/Data engineer💻

0개의 댓글