Swift

Optional

KangChangHyeok 2022. 7. 18. 11:32

스위프트가 다른 언어와 다른 가장 큰 특징중 하나이다.

스위프트의 안정성을 나타낼수 있는 특징이다.

값이 있을수도, 값이 없을수도(nil) 있는 이 2가지 상황을 표현한다.

참고로 여기서 nil은 실제로 값이 없는것이 아니라, 값이 없는 상황을 나타내는 키워드이다.

 

 

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

var num: Int?
var str: String? = "안녕하세요"

1.Forced Unwrapping

옵셔널 타입을 가장 쉽게 언래핑 할수 있지만, 별로 추천하지 않는 방법이다.

만약 nil을 forced Unwrapping하게 될 경우 심각한 오류를 발생시킬수 있기 때문이다.

print(str!)
print(num!) -> 에러. 값이 없는데 강제적으로 추출하였기 때문이다.

2.if문으로 nil이 아니라는 것을 확인한 후 forced Unwrapping 하기

if str != nil {
    print(str!)
}

3. 옵셔널 바인딩

if let s = str {    // s라는 상수에 담긴다면    // nil
    print(s)
}

var optionalName: String? = "홍길동"

if let name = optionalName {
    print(name)
}

// 실제 앱을 만들때 guard let 바인딩 많이 사용

func doSomething(name: String?) {
    guard let n = name else { return }
    print(n)
}


doSomething(name: "hello")

4.닐 코얼레싱 (Nil-Coalescing) 연산자를 사용하는 방법

 

// 옵셔널 타입에 대하여, 디폴트(기본)값을 제시할 수 있을 때 사용
// (직접 값을 벗겨서 사용하는 것은 아니고, 디폴트값 제시를 통해 옵셔널 가능성을 없애는 방법)


// String? ====> String


var serverName: String? = "홍길동"


var userName = serverName ?? "미인증사용자"    // String타입

print(userName)


var hello = "인사하겠습니다. " + (str ?? "Say, Hi")
print(hello)



str = nil
print(str ?? "Say, Hi")

 

'Swift' 카테고리의 다른 글

guard문을 사용하는 이유  (0) 2023.03.02
Swift - Print() 자세히 살펴보기  (0) 2022.07.12