본문 바로가기

Swift

[트러블 슈팅] DiffableDataSource의 같은 데이터 apply로 인한 오류

문제 배경

DiffableDataSource를 사용하여 두개 섹션의 셀을 나타내도록 구성하였습니다.

검색결과와 최근 본 책의 섹션은 같은 데이터모델을 사용하고 있습니다.

검색결과의 셀을 선택하면 책의 자세한 정보가 담긴 페이지가 보여지고, 자동으로 최근 본책의 섹션에 저장되도록 설정하였습니다.

문제 원인

DiffableDataSource를 사용해서 고유한 셀이 아닌 중복적으로 나타나 앱이 튕겨버린다.

이는 중복된 셀을 안보여주는 점은 있지만.. 문제는 팅기고 알게된다는것.. 매우 치명적이다.

 

 

해결한 방법

데이터모델 수정

가장 직관적인 방법으로 같은 데이터를 가져도 데이터 항목중 하나를 다르게 두는 방법이다.

struct Book: Hashable, Decodable {
    let title: String
    let authors: [String]
    let price: Int
    let description: String?
    let imageURL: String?
    var isRecent: Bool = false // 추가
    
    enum CodingKeys: String, CodingKey {
        case title, authors
        case price = "sale_price"
        case description = "contents"
        case imageURL = "thumbnail"
    }
}

위 코드를 추가하여 최근 기록 셀과 검색 결과 셀의 차이를 두는 것이다.