스위프트가 다른 언어와 다른 가장 큰 특징중 하나이다.
스위프트의 안정성을 나타낼수 있는 특징이다.
값이 있을수도, 값이 없을수도(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 |