[Swift] 옵셔널 바인딩

팔랑이·2024년 5월 20일
0

iOS/Swift

목록 보기
18/71

Swift에서는 값이 없을수도 있는 옵셔널을 막 갖다 사용하려고 하면 노란색이나 빨간색으로 오류가 뜬다. 안전성을 위해 웬만해서는 강제 언래핑을 하지 않고 옵셔널 바인딩을 통해 언래핑을 해줘야 한다. 지금 값이 nil이 아니더라도 언제 어디서 어떻게 nil로 변해서 크래시가 날지 모르기 때문에 안전하게 옵셔널 바인딩하는 습관을 들이자.


옵셔널 바인딩은 크게 if let/var , guard let/var else 두 가지로 구분된다.

1-1. if let

if let 상수 = 옵셔널 표현식 {
    // 옵셔널 표현식이 nil이 아닐 때 실행될 코드
}
  • 옵셔널 값이 nil이 아니면 상수에 값을 할당하고 코드 블록을 실행
  • nil인 경우, 코드 블록은 실행되지 않는다

1-2. if var

if var 변수 = 옵셔널 표현식 {
    // 옵셔널 표현식이 nil이 아닐 때 실행될 코드
}
  • if varif let과 비슷하지만, 값의 수정이 필요할 때 사용
  • 옵셔널 값이 nil이 아니면 변수에 값을 할당하고, 이 변수는 코드 블록 내에서 수정될 수 있다.
  • if let과 마찬가지로 옵셔널 값이 nil일 경우 코드는 실행되지 않음

2-1. guard let else

guard let 상수 = 옵셔널 표현식 else {
    // 옵셔널 표현식이 nil일 때 실행될 코드
    return // 또는 break, continue, throw 등
}
// 옵셔널 표현식이 nil이 아닐 때 실행될 코드
  • guard let은 현재의 코드 블록을 벗어나기 전에 옵셔널 값이 nil인지 아닌지를 체크
  • 값이 nil이면 else 블록이 실행되고, break, continue, throw 등을 사용해 보통 함수나 루프 등에서 벗어남
  • nil이 아닌 경우, 이후의 코드를 계속 실행

2-2. guard var else

guard var 변수 = 옵셔널 표현식 else {
    // 옵셔널 표현식이 nil일 때 실행될 코드
    return // 또는 break, continue, throw 등
}
// 옵셔널 표현식이 nil이 아닐 때 실행될 코드
  • guard varguard let과 비슷하지만, 값의 수정이 필요할 때 사용
  • 옵셔널 값이 nil이 아니면 변수에 값을 할당하고 이후 코드 내에서 변수 수정 가능
  • nil인 경우 else 블록 시행, nil이 아닌 경우 이후 코드 실행

둘이 좀 많이 헷갈리는데 else -> nil이라고 생각해야겠다

if let nil아니면 실행
guare let {else nil이면 실행} nil아니면 실행

profile
정체되지 않는 성장

0개의 댓글