본문 바로가기
iOS, Swift 개발

Swift Dictionary, Array nil 체크

by Nin J 2024. 4. 16.

 

* Swift Dictionary에서 nil을 체크하는 방법

종종 사용하는 Dictionary 구분에서 

key 값은 있느나 Value 부분에 nil 값이 들어오는 경우, 혹은 값이 없는 경우

구분 체크부분에서 통과되나 때론 Crash 이슈가 발생된다.

이러한 부분에서 체크를 하는 Validation 항목이다.

1. 온전한 key, Value 값이 있을 경우만 진행되게끔 추가되는 하나의 Validation 로직이다.

2. Optional Binding 사용: Dictionary가 nil이 아닌지 먼저 확인한 후, 안전하게 값을 가져올 수 있다.

if let myDict = myDictionary {

    // Dictionary가 nil이 아닌 경우

    // myDict를 사용하여 안전하게 값을 가져옴

} else {

    // Dictionary가 nil인 경우

}

3. nil 병합 연산자(Optional Chaining): nil 병합 연산자를 사용하여 nil이 아닐 때만 값을 가져온다.

if let value = myDictionary? [key] {

    // Dictionary가 nil이 아니며, 해당 key에 대한 값이 있는 경우

} else {

    // Dictionary가 nil이거나 해당 key에 대한 값이 없는 경우

}

4. Guard 문 사용: Guard 문을 사용하여 함수나 블록의 시작에서 빠르게 nil을 확인할 수 있다.

guard let myDict = myDictionary else {

    // Dictionary가 nil인 경우

    return

}

// Dictionary가 nil이 아닌 경우

// myDict를 사용하여 안전하게 값을 가져옴

 

* Swift Array에서 nil을 체크하는 방법

1. Optional Binding: 배열이 nil인지 확인하고 안전하게 접근하는 방법이다.

var myArray: [Int]?

if let array = myArray {

    // 배열이 nil이 아닌 경우

    print("Array is not nil: \(array)")

} else {

    // 배열이 nil인 경우

    print("Array is nil")

}

2. Nil Coalescing Operator: 배열이 nil인 경우 대체값을 제공하는 방법이다.

let newArray = myArray ?? []

위의 코드에서???? 연산자는 myArray가 nil이면 빈 배열을 반환한다.

 

3. Guard Statement: 함수나 블록 내에서 조건을 만족하지 않으면 빠르게 종료하는 방법이다.

guard let array = myArray else {

    // 배열이 nil인 경우 처리

    return

}// 배열이 nil이 아닌 경우 처리

4. Optional Chaining: 배열이 nil인지 확인하고 안전하게 접근하는 방법이다.

let count = myArray?.count ?? 0

 

위의 코드에서 ?. 연산자는 myArray가 nil이면 count를 호출하지 않고 바로 0을 반환한다.

어떤 방법을 사용할지는 상황과 선호도에 따라 다르고. 보통은 옵셔널 바인딩이나 nil 병합 연산자를 가장 많이 사용한다.