iOS Swift 문법 - Optional Binding
포스트
취소

iOS Swift 문법 - Optional Binding

안녕하세요. narvis2 입니다.
이번시간에는 Swift 문법에 중에서도 Optional Binding에 대하여 알아보는 시간을 가지도록 하겠습니다.

🍀 Optional Binding


  • 강제로 Optional을 여는 방식(!)가 아닌 안전하게 확인을 해보고 unwrapping을 하는 방법
  • if문을 이용하여 Optional에 할당된 값을 임시 변수 또는 상수에 할당을 해주는 방식
Force unwrappingOptional Binding
!를 써서 상제로 Optional추출if let, guard let을 써서 Optional추출
  • 만약 Optional에 값이 있다면 if문 안으로 들어가게 되고, nil이라면 그냥 통과하게 되는 방식

☘️ if let (지역 변수로만 사용가능)

  • 지역 변수로만 사용 가능
  • 즉, if 문 블럭 내부에서만 사용 가능
    • 할당 상수를 if문 안에서만 사용

예제 👇

1
2
3
4
5
6
7
8
9
10
11
12
let x: Int? = 10
let y: Int? = nil

if let xx = x {
    print("x = \(xx)")
} else {
    print("x is Optional")
}

if let yy = y {
    print("y = \(yy)")
}

설명 👇

  • 값이 있는 xxx에 대입되어 if문을 수행하게 되고, 값이 nilyyy에 대입하지 못하고 그냥 통과함

☘️ 여러 Optional Binding

  • Optional Binding 할때는 여러 변수상수 또한 같이 할 수 있음

    ,로 구분지어서 사용

예제 👇

1
2
3
4
5
6
7
8
9
10
let name1: String?
let name2: String?

name1 = "choi"
name2 = "kim"

if let nameFirst = name1, let nameSecond = name2 {
    // name1, name2 가 Optinal이 아닌 경우 해당 로직 실행
    print(nameFirst, nameSecond)
}

☘️ guard let (전역 변수로 사용가능)

  • guard let 에서는 else인 부분만 작성 이 가능
    • 즉, 값이 nil이여서 Optional 추출이 되지 않을때만 어떠한 행동을 취할 수 있음
    • 만약 nil값이 아닐 걸 확인하고 Optional을 성공적으로 추출했다면 guard let문을 통과
  • 전역변수로 사용 가능
    • 즉, guard let문 밖에서도 할당 상수를 자유롭게 사용 가능
  • guard letelse
    • ❗️항상 return 이나 throw문이 와야함

예제 👇

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let x: Int? = 10
let y: Int? = nil

func opbinding() {
    guard let xx = x else {
        return print("x is Optional")
    }
    print(xx)

    guard let yy = y else {
        return print("y is Optional")
    }
    print(yy)
}

opbinding()
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.