[Swift Programming] 옵셔널Swift 프로그래밍2022. 7. 7. 12:32
Table of Contents
무작정 Swift 언어로 iOS를 개발해 보니, Swift 지식이 부족하다는 것을 깨달았고
야곰님의 "스위프트 프로그래밍 3판" 책으로 다시 공부해 보려고 합니다 ~
잘못된 부분이 있다면 언제든지 말씀해 주세요 ~
옵셔널
: 스위프트의 특징 중 하나인 안전성을 담보하는 기능으로, 변수 또는 상수의 값이 nil일 수도 있다는 것을 표현
8.1 옵셔널 사용
- 옵셔널 변수 또는 상수가 아니면 nil을 할당할 수 없다. 값이 없는 옵셔널 변수 또는 상수에 강제로 접근하려면 오류가 생김
- 옵셔널을 표시해줌으로써 ‘해당 변수 또는 상수가 nil일 수도 있으므로 사용에 주의하라’는 경고를 표시
- 옵셔널 변수 또는 상수등 데이터 타입 뒤에 물음표(?)를 붙여 옵셔널을 표현해줌
var myName: String? = "yagom"
print(myName) // 출력 : Optional("yagom")
- 사용 예 : 전달되는 전달인자의 값이 잘못된 값일 경우 제대로 처리하지 못했음을 nil을 반환하는데, 이때 표현하는 것을 들을 수 있다.
8.2 옵셔널 추출
- 옵셔널의 값을 옵셔널이 아닌 값으로 추출하는 방법
- 예 ) Optional("yagom") 👉🏻 yagom
- 느낌표(!)를 이용해 강제 추출
- 런타임 오류가 일어날 가능성이 가장 높아, 가장 위험한 방법
- 강제추출 시 옵셔널 값이 nil이라면 런타임 오류가 발생한다.
var myName: String? = "yagom" var yagom : String = myName! print(yagom) // 출력 : yagom
- 옵셔널 바인딩
- 옵셔널에 값이 있는지 확인할 때 사용하는 방법, if또는 while 구문등과 결합하여 사용하는데 만약 옵셔널에 값이 있다면 옵셔널에서 추출한 값을 일정 블록안에서 사용할 수 있는 상수나 변수로 할당해서 옵셔널이 아닌 형태로 사용할 수 있도록 해준다.
var myName: String? = "yagom" if let name = myName{ print("My name is \\(name)") // 출력 : My name is yagom } else { print("myName == nil") }
- 암시적 추출 옵셔널
- 로직상 nil때문에 런타임 오류가 발생하지 않을 것 같다는 확신일 들 때 nil을 할당해줄 수 있는 옵셔널이 아닌 변수나 상수를 만들때 사용
- 타입 뒤에 느낌표(!)를 사용해주면 된다
- 지정된 타입은 일반 값처럼 사용할 수 있으나, 여전히 옵셔널이기 때문에 nil도 할당해줄 수 있다. but, nil이 할당되어 있을 때 접근을 시도하면 런타임 오류가 발생
'Swift 프로그래밍' 카테고리의 다른 글
[Swift Programming] 인스턴스 생성 및 소멸 (0) | 2022.07.26 |
---|---|
[Swift Programming] 프로퍼티와 메서드 (0) | 2022.07.12 |
[Swift Programming]구조체와 클래스 (0) | 2022.07.08 |
completion handler VS async/await (0) | 2022.07.07 |
@gani+ :: Gani_Dev :)
꾸준히 기록할 수 있는 사람이 되자 !