IOS/swift

[Swift] Optional

내일도이렇게 2022. 3. 22. 16:30

Optional 

값이 있을 수도 있고, 없을 수도 있는 경우를 포함하는 임시적 타입 

값을 안전하게 꺼낼 수 있게 하여 런타임 오류를 피할 수 있다. 

 

옵셔널은 타입 어노테이션에 ? 를 붙여 표기한다. 

var name: String? = "jmkim"

print(name) // Optional("jmkim")

 

옵셔널을 추출하는 4가지 방법 

 

1) 강제 추출 : 값이 있다는 것이 확실할 때 사용 

var name: String? = "jmkim"

print(name!)  // jmkim

 

2) if 문으로 nil 이 아니라는 것 확인 후 해제 

var name: String? = "jmkim"

if name != nil {
    print(name!) // jmkim
}

 

3) 옵셔널 바인딩 

 

if let 

var name: String? = "jmkim"

if let name = name {
    print(name)  // jmkim
}

 

guard let 

var name: String? = "jmkim"


func guardExe(name: String?) {
    guard let name = name else {
        // name 이 nil인 경우 실행
        return
    }
    
    print(name) // "jmkim"
}

guardExe(name: name)

 

 

4)  Nil - Coalescing

var name: String? = "jmkim"

print( name ?? "" ) // jmkim