옵셔널(Optionals)은 Swift의 특징 중 하나인데, Objective C 에는 없는 개념이다.
처음 Objective C와 Swift 언어를 같이 사용하면, 에러코드의 절반이 거진 Optionals 인데, 간단하게 생각해서 Optionals이 있으면 Nil(null) 허용이고, Optionals이 붙지 않으면 Nil이 허용되지 않는다!
개발자가 사용할 때, Nil을 허용해도 되는 변수인지 확인 하고 사용시 안전성이 확실히 보장받는 느낌이다.
처음에는 어색하지만, Optionals을 활용한 코드를 구현하다 보면 간편하게 이해할 수 있을 것 이다.
처음 Objective C와 Swift 언어를 같이 사용하면, 에러코드의 절반이 거진 Optionals 인데, 간단하게 생각해서 Optionals이 있으면 Nil(null) 허용이고, Optionals이 붙지 않으면 Nil이 허용되지 않는다!
개발자가 사용할 때, Nil을 허용해도 되는 변수인지 확인 하고 사용시 안전성이 확실히 보장받는 느낌이다.
처음에는 어색하지만, Optionals을 활용한 코드를 구현하다 보면 간편하게 이해할 수 있을 것 이다.
Optionals Sample
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import UIKit
//
// 1. 옵셔널 사용/미사용 [키워드 : ?]
// Swift 안정성에 의한 Type 에러 및 Nil 비허용
var str1:String = "Hello, playground"
//str1 = nil // [Error] nil값 허용하지 않음! 'nil' cannot be assigned to type 'String'
print(str1) // 결과 : Hello, playground
//
var str2:String? = "Hello, playground"
str2 = nil // nil 값 허용함.
print(str2) // 결과 : nil
//
// 2. 옵셔널 강제추출 [키워드 : !]
var str3:String? = "Hello, playground"
print(str3) // 결과 : Optional("Hello, playground")
print(str3!) // 결과 : Hello, playground
//
// 3. 주의사항, 옵셔널 활용하기
str3 = nil
// 옵셔널이 아닌 변수에 nil을 담은 변수를 사용시 런타임 에러 발생 (앱 크러시)
var str4:String = ""
// str4 = str3! // [런타임 에러] Fatal error: Unexpectedly found nil while unwrapping an Optional value
//
// 안정성을 고려한 코드 (삼항 연산자를 통한 값이 없을때 처리)
if let value:String = str3 ?? "값이 없내요" {
str4 = value
print(str4) // 결과 : 값이 없내요
} else {
print("str3 의 값이 없습니다.")
}
| cs |
댓글
댓글 쓰기