[Swift] 옵셔널(Optional)과 옵셔널 값 추출

김형근·2024년 7월 20일

[Swift] 문법

목록 보기
7/20

🍎 Swift의 옵셔널(Optional)과 옵셔널 값 추출

  • Swift에서는 변수 또는 상수가 값이 없을 수도 있음을 나타내기 위해 옵셔널(Optional) 타입을 사용합니다. 옵셔널은 변수에 값이 존재할 수도 있고, 존재하지 않을 수도 있음을 명시적을 표현할 수 있는 방법입니다.

🍏 1. 옵셔널(Optional) 정의하기

  • 옵셔널은 ? 기호를 사용하여 정의합니다. 옵셔널 타입은 해당 타입의 값이 있거나(nil) 없거나 둘 중 하나일 수 있음을 나타냅니다.
// 옵셔널 변수 선언
var optionalString: String? = nil // nil로 초기화
optionalString = "Hello, Swift!" // 값 할당

🍏 2. 옵셔널 값 추출하기

🧃 2.1 강제 언래핑 (Force Unwrapping)

  • 강제 언래핑은 "!" 기호를 사용하여 옵셔널에서 값을 추출하는 방법입니다 그러나 옵셔널이 nil일 경우 런타임 오류가 발생하므로 주의해야 합니다.
if optionalString != nil {
    print(optionalString!) // "Hello, Swift!" 출력
}

🧃 2.2 안전한 언래핑 (Optional Binding)

  • 옵셔널 바인딩은 if let 또는 guard let 문을 사용하여 옵셔널에서 안전하게 값을 추출하는 방법입니다. 이 방법을 사용하면 nil 체크를 하면서 안전하게 값을 사용할 수 있습니다.
// if let을 사용한 옵셔널 바인딩
if let unwrappedString = optionalString {
    print(unwrappedString) // "Hello, Swift!" 출력
} else {
    print("값이 없습니다.")
}

// guard let을 사용한 옵셔널 바인딩
func printString() {
    guard let unwrappedString = optionalString else {
        print("값이 없습니다.")
        return
    }
    print(unwrappedString) // "Hello, Swift!" 출력
}

🧃 2.3 nil 병합 연산자 (Optional Chaining)

  • nil 병합 연산자(??)를 사용하면 옵셔널이 nil 경우 기본값을 제공할 수 있습니다.
let defaultString = optionalString ?? "기본 값"
print(defaultString) // "Hello, Swift!" 출력 (값이 있을 경우)

🧃 2.4 옵셔널 체이닝 (Optional Chaining)

  • 옵셔널 체이닝은 옵셔널 값이 nil이 아닌 경우에만 속성이나 메서드를 호출하는 방법입니다.
class Person {
    var name: String?
}

let person: Person? = Person()
person?.name = "Alice"

// 옵셔널 체이닝을 사용하여 값에 접근
let name = person?.name?.uppercased() ?? "이름 없음"
print(name) // "ALICE" 출력

🍏 3. 옵셔널과 관련된 주의사항

  • 강제 언래핑의 위험: 강제 언래핑을 사용할 때는 항상 옵셔널이 nil이 아닌지 확인하는 것이 중요합니다.
    nil일 경우 앱이 크래시 날 수 있습니다.

  • 옵셔널 타입 사용의 장점: 옵셔널을 사용하면 값의 존재 여부를 명확히 표현할 수 있어 코드의 안전성을 높이고, 런타임 오류를 줄이는 데 기여합니다.

profile
꾸준히 기록하기

0개의 댓글