개발하다 보면 Core Data에서 특정 데이터를 가져올 때 nil 값이 발생하는 경우가 있다.
특히, 가장 최신의 데이터를 가져오려 할 때 해당 데이터가 없을 수도 있기 때문에 적절한 기본값을 설정해주는 것이 중요하다.
이번 글에서는 fetchLatestHangdam()
메소드를 활용하여 최신 데이터를 가져오고, nil 값이 발생할 경우 기본값을 설정하는 과정을 정리한다.
let hangdam = CoreDataManager.shared.fetchLatestHangdam()
let name = hangdam?.name ?? "행담이"
위 코드는 Core Data에서 가장 최신의 행담이 데이터를 가져오고, 만약 존재하지 않는다면 기본값으로 "행담이"를 사용하도록 처리한 것이다.
이러한 경우 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이라면 기본값을 설정하도록 처리했다.
??
연산자를 활용하면 nil일 때 기본값을 설정할 수 있다.fetchLatestHangdam()
내부에서도 nil 값이 들어오는 경우를 고려하여 기본값을 설정해야 한다.이렇게 nil 처리를 잘 해주면 Core Data에서 데이터를 가져올 때 발생할 수 있는 오류를 방지할 수 있다.