5minho / DreamRecorder

mino & bran BoostCamp Project
6 stars 0 forks source link

DreamCacheManager 에서 연도, 달 데이터 가져올때 배열 인덱스 예외 처리 #60

Closed 5minho closed 6 years ago

5minho commented 6 years ago

year -> 0 ~ 130 month -> 1 ~ 13

이 아닐때 예외 처리 해야함

5minho commented 6 years ago

extension Array 를 이용해서 Array index out of range error 없이 안전하게 배열에 접근하기

extension Array {

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

}

guard var cachedDreams = cacheManager.cachedDreams[safe: yearIndex]?[safe: fromMonth] else {
            return
        }

        if cachedDreams.isEmpty == false {

            self.dreams = cachedDreams
            return

        }

indices 는 iOS 9 부터 사용가능 하므로 iOS 8 이하는 startIndex, endIndex를 이용해야 한다고 함

return startIndex <= index && index < endIndex ? self[index] : nil
return 0 <= index && index < self.count ? self[index] : nil