iOS/Swift

[Swift] Optional

듀니듀니 2022. 11. 17. 11:21

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