본문 바로가기

App Dev/iOS

iOS Swift 옵셔널 변수를 Unwrapping 하는 두가지 방법

반응형

 

Swift가 가지고 있는 가장 큰 특징 중 하나가 바로 옵셔널Optional입니다. 직역하면 '선택적인' 이라는 뜻이 되는데요. 값이 있을 수도 있고 없을 수도 있는 것을 나타냅니다.

https://devxoul.gitbooks.io/ios-with-swift-in-40-hours/content/Chapter-2/optionals.html

 

옵셔널 (Optional) · 40시간만에 Swift로 iOS 앱 만들기

 

devxoul.gitbooks.io

 

[옵셔널 변수]

import UIKit

//옵셔널이란 ?
// 값이 있는지 없는지 모른다.
// nil -> 값이 없다.

var someVariable : Int? = nil


if someVariable == nil {
    
    someVariable = 90
}

print("언래핑이 안되었다. 즉 아직 모른다 -> someVariable : \(someVariable)")

Optional <- 값이 있는지 없는지 모른다.
nil -> 값이 없다. 

[결과]

언래핑이 안되었다. 즉 아직 모른다 -> someVariable : Optional(90)

래핑이 되어 있는 값 반환 

 

[언랩핑_No.1]

if let otherVariable = someVariable {
    print("언래핑 되었다 . 즉 값이 있다 -> otherVariable : \(otherVariable)")
}
else{
    print("값이 없다. ")
}

[결과]

언래핑 되었다 . 즉 값이 있다 -> otherVariable : 90

알맹이만 쏙 끄집어내서 출력하게 된다. 

 

위의 if 문을 더 간단하게 작성하는 방법도 있다. 

someVariable = nil
// someVariable 이 비어있으면 즉 값이 없으면 기본값으로 요놈을 넣겠다

let myValue = someVariable ?? 10

print("myValue : \(myValue)")

?? ->  만약에 someVariable 에 값이 없으면 10 을 넣겠다. 

[언랩핑_No.2]

var firstValue : Int? = 30

var secondValue : Int? = 40

 

옵셔널 변수 선언하였다.  

함수로 언랩핑을 진행해 본다. 

func unwrap(parameter : Int?){
    
    print("unrwap() called")
    
    guard let upWrappedParam = parameter else{
        return
    }
    print("upWrappedParam \(upWrappedParam)")
}

guard let upWrappedParam = parameter else{
        return
    }

이 코드도 parameter 에 값이 있으면 upWrappedParam에 값을 넣겠다 ! 

[결과]

unwrap(parameter : firstValue)
unwrap(parameter : secondValue)


->
unrwap() called
upWrappedParam 30
unrwap() called
upWrappedParam 40
반응형