[Swift] 옵셔널

승아·2021년 4월 17일
0
post-custom-banner

부스트코스-iOS 프로그래밍을 위한 스위프트 기초

✅⠀옵셔널이란?

  • 값이 있을 수도, 없을 수도 있음을 표현
  • nil이 할당 될 수 있는지 없는지 표현
var name: String? // nil이 할당될 수 있다.
var name: String // nil이 할당될 수 없다.

옵셔널을 쓰는 이유

  • 명시적 표현
    - nil의 가능성을 코드만으로 표현가능
    - 문서/주석 작성 시간 절약
  • 안전한 사용
    - 전달받은 값이 옵셔널이 아니라면 nil 체크를 하지 않고 사용가능
    - 예외 상황을 최소화 하는 안전한 코딩
    - 효율적인 코딩

옵셔널 문법과 선언

  • 옵셔널 문법 = enum + generics
enum Optional<Wrapped>: ExpressibleByNiliteral {
         case none
         case some(Wrapped)
}

let optionalValue: Optional<Int> = nil // 이렇게 표현해도 되지만
let optionalValue: Int? =nil // 물음표를 사용하여 간단히 표현한다.

✅⠀옵셔널 추출이란?

  • 옵셔널에 들어있는 값을 사용하기 위해 꺼내오는 것

옵셔널 방식

  • 옵셔널 바인딩
  1. nil 체크 + 안전한 추출
  2. 옵셔널 안에 값이 들어있는지 확인하고 값이 있으면 값을 꺼내옵니다.
  3. if-let 방식, guard 방식
var dogName: String?
dogName = nil

// 1. 강제추출
print(dogName!)

// 2. if let 방식
if let unwrappedDogName = dogName{
	print(unwrappedDogName)
} else{
	print("DogNAme is nil")
}

// 3. guard
guard let unwrappedDogName = dogName else { 
	print("DogNAme is nil") 
    return
}
print(unwrappedDogName)

💡⠀정말 꼭 필요한 경우에 한하여, 자신이 책임질 수 있는 상황이 아니라면 옵셔널 강제추출을 사용하지 않겠노라 다짐하는 글을 미래의 나에게 한문장씩 남겨봅시다.

강제추출 방식 그동안 잘 썼다.. (물론 꼭 nil이 나올 수 없는 경우에 쓰긴 했음 😅) 다신(?) 보지 말자 ~

post-custom-banner

0개의 댓글