본문 바로가기
iOS

Swift - Optional 정리

by minsol Kim 2024. 4. 19.

Optional 이란 ?

어떤 변수는 컴파일 순간에 값이 정해지지 않는 경우가 있다.

이런 변수를  Optional 변수라고 한다. 

 

변수 / 상수 선언 3가지 

- 일반  : 일반 값을 저장할 수 있으나 절대 nil 값을 지정할 수 없다. 

- Optional : 일반 값과 nil 값을 저장할 수 있다. 

- Implicit Unwrapping : 일시적으로 nil을 가질 수 있으나 read 되기전에 반드시 일반 값이 저장되어야 한다. 아니면 -> 죽는다.

 

Forced Unwrapping (강제 언래핑)

- Optional 변수의 값을 일반 변수의 값으로 변환

- 문법 : 변수 !

var anumber : Int = 10 //일반
var bnumber : Int? = 20 //옵셔널
var cnumber: Int! //암시적 언랩 옵셔널
var dnumber: Int! //암시적 언랩 옵셔널

anumber = bnumber //문법 에러
anumber = bnumber! //강제 언래핑

 

Optional Binding (옵셔널 바인딩)

guard - 옵셔널 바인딩 중 하나라도 nil이면 else로 빠져 나옴 

 

func compre2numbers(first: String, second:String) -> String {
    guard let firstNumber = Int(first), let secondNumber = Int(second) else {
        return "error"
    }
    // 이 이후에만 firstNumber, secondNumber가 유효함 
    if firstNumber < secondNumber && secondNumber < 100 {
        return "\(firstNumber) < \(secondNumber) < 100"
    }
    return "error"
}
print(compre2numbers(first: "10", second: "42"))

 

Optional Chaining (옵셔널 체이닝)

- 옵셔널 체이닝은 옵셔널 변수를 사용하여 하위 프로퍼티 , 메소드, 스브스크립트 등을 액세스할 때 옵셔널 변수가 nil인 경우 하위 프로퍼티 , 메소드 , 스브스크립트 등의 액세스 없이 결과를 nil로 함.

 

- 액세스하고자하는 프로퍼티, 메소드에 ?를 붙여서 표시

guard let location = placemarks?.first?.location else { return print("no data")}

'iOS' 카테고리의 다른 글

Swift - REST API(URL Session,URL Request ,URL SessionTask)  (0) 2024.04.20
Swift - Sync 와 ASync  (0) 2024.04.20
Swift - 클로저(Closure) 함수  (0) 2024.04.19
Swift - protocol 생성 Anyobject 상속  (0) 2024.03.30
Swift - final class  (0) 2024.03.30

댓글