Optional?
안전한 코드를 작성하기 위해 사용하는 문법
nil -> 값이 없음을 표현하는 키워드
String = 값이 없으면 에러
String? = 에러가 나지 않도록 임시적인 타입을 담아둠
let str: String = "Swift"
let optionalStr: String? = nil
let a: Int? = nil
let b: Int? = a //nil
b // nil
옵셔널 타입 추출 방법
1. 강제 추출 - nil이 아닌 값이 있다는 것을 확신하고 강제로 값을 추출 (값이 없는 경우 크래시 위험)
let value: String? = "val"
value! // val
let value2: String?
value2! = 에러
2. nil 확인후, 강제 추출
if value != nil {
print(value!)
}
3. 옵셔널 바인딩 (if let, guard let) - 바인딩이 되는 경우에만 특정 작업을 실행
// if let
if let number = optionalNumber {
print(number)
}
// guard let
func callName(name: String?) {
guard let n = name else { return }
print(n)
}
callName(name: nil) // 아무 반응 없음
4. Nil - Coalescing - 옵셔널 표현식 뒤에 기본 값을 제시해서, 옵셔널의 가능성을 없앤다
optionalValue ?? "기본값"
'iOS > Swift' 카테고리의 다른 글
| [Swift] 서브스크립트 (Subscripts) (0) | 2022.11.25 |
|---|---|
| [Swift] 클래스와 구조체 (Class, Struct) (0) | 2022.11.22 |
| [Swift] Array (0) | 2022.11.16 |
| [Swift] Any, AnyObject (0) | 2022.11.15 |
| [Swift] 타입캐스팅 (Type Casting) (0) | 2022.11.15 |