Core Data에서 최신 데이터를 가져올 때 nil 값 처리하기

sonny·어제
0

TIL

목록 보기
135/135

개발하다 보면 Core Data에서 특정 데이터를 가져올 때 nil 값이 발생하는 경우가 있다.

특히, 가장 최신의 데이터를 가져오려 할 때 해당 데이터가 없을 수도 있기 때문에 적절한 기본값을 설정해주는 것이 중요하다.

이번 글에서는 fetchLatestHangdam() 메소드를 활용하여 최신 데이터를 가져오고, nil 값이 발생할 경우 기본값을 설정하는 과정을 정리한다.

최신 데이터를 가져오는 코드

let hangdam = CoreDataManager.shared.fetchLatestHangdam()
let name = hangdam?.name ?? "행담이"

위 코드는 Core Data에서 가장 최신의 행담이 데이터를 가져오고, 만약 존재하지 않는다면 기본값으로 "행담이"를 사용하도록 처리한 것이다.

nil 값이 발생하는 이유

  1. Core Data에 저장된 데이터가 없을 때
  2. fetch 요청이 실패했을 때
  3. 저장된 데이터가 있지만, name 속성이 nil일 때

이러한 경우 fetchLatestHangdam() 메소드가 nil을 반환할 수 있으며, 그대로 사용하면 앱이 정상적으로 동작하지 않을 가능성이 있다. 따라서 ?? 연산자를 사용하여 기본값을 설정하면 앱이 예외 상황에서도 원활하게 실행될 수 있다.

fetchLatestHangdam()의 구현

func fetchLatestHangdam() -> HangdamDTO? {
    let fetchRequest: NSFetchRequest<HangdamEntity> = HangdamEntity.fetchRequest()
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "startDate", ascending: false)]
    fetchRequest.fetchLimit = 1
    
    do {
        if let entity = try context.fetch(fetchRequest).first {
            var hangdamDTO = HangdamMapper().toDTO(from: entity)
            if hangdamDTO.name == nil {
                hangdamDTO.name = "행담이"
            }
            return hangdamDTO
        }
    } catch {
        print(DataError.fetchRequestFailed.localizedDescription)
    }
    return nil
}

이 메소드는 Core Data에서 startDate 기준으로 최신 데이터를 하나 가져오도록 구현되어 있다. 만약 데이터를 가져오는데 실패하거나 name 속성이 nil이라면 기본값을 설정하도록 처리했다.

정리

  • Core Data에서 최신 데이터를 가져올 때 nil 값이 발생할 수 있다.
  • ?? 연산자를 활용하면 nil일 때 기본값을 설정할 수 있다.
  • fetchLatestHangdam() 내부에서도 nil 값이 들어오는 경우를 고려하여 기본값을 설정해야 한다.
  • 이러한 처리를 통해 앱이 예외 상황에서도 정상적으로 동작할 수 있도록 만든다.

이렇게 nil 처리를 잘 해주면 Core Data에서 데이터를 가져올 때 발생할 수 있는 오류를 방지할 수 있다.

profile
iOS 좋아. swift 좋아.

0개의 댓글

관련 채용 정보