Swift

[Swift] 안전하게 Array Index 하기 - subscript 직접 구현하기

insub4067 2023. 1. 8. 16:24

 

 

[Swift]안전하게 배열 조회하기

안전하게 배열 조회하기 배열에서 특정 위치의 값을 얻기 위해서는 배열의 크기를 체크해야하는 조건이 필요합니다. if index < array.count { // 작업 수행 } 범위를 확인하지 않고 값을 조회하면, 다

minsone.github.io

Swift 의 Array 는 range 를 벗어나는 index 를 조회하려고 하면 에러가 발생하고 앱이 죽어버립니다.

이럴때 안전하게 out of range 라면 nil 을 뱉어주어서 분기처리를 해준다면 보다 안전하게 앱을 관리할수 있겠죠?

 

subcript 란 array 에서 index 를 조회하거나, dictionary 에서 key 로 value 를 찾고자 할때 사용하는 함수입니다.

 

기존 👇👇

let array = [1,2,3,4,5,6]

print(array[5]) //6
print(array[6]) //Swift/ContiguousArrayBuffer.swift:600: Fatal error: Index out of range

 

subscript 를 직접 만들어서 사용할 경우 👇👇

import Foundation

extension Array {
    subscript (safe index: Int) -> Element? {
        return indices ~= index ? self[index] : nil
    }
}

let array = [1,2,3,4,5,6]

print(array[safe: 5]) // Optional(6)
print(array[safe: 6]) // nil