스파르타 코딩 클럽 - iOS 스타터 6기/본 캠프

70. 스파르타 코딩 클럽 - 최종 팀 프로젝트 #12

seongpil Heo 2025. 6. 23. 22:21

  🎯  Trouble Shooting

[ 1. RxDataSource identity 설정에서 발생했던 Duplicate Error ]

섹션을 하나만 사용하는 TableView에서 identity를 UUID로 설정했을 때

애니메이션이 부자연스럽게 발생한다.

또한 현재위치 버튼을 클릭했을 때, 불필요한 애니메이션이 발생한다.

 

변경 전

extension StoreInfo: IdentifiableType {
    var identity: String { return UUID().uuidString } 
}

struct StoreSection {
    var identity: String
    var items: [StoreInfo]

    init(items: [StoreInfo]) {
        self.identity = UUID().uuidString
        self.items = items
    }
}

extension StoreSection: AnimatableSectionModelType {
    typealias Item = StoreInfo
//    typealias Identity = UUID // Identity 타입을 UUID로 변경

    init(original: StoreSection, items: [StoreInfo]) {
        self = original
        self.items = items
    }

 

변경 후

extension StoreInfo: IdentifiableType {
    var identity: String { return displayName } // 고유 식별자로 가게명 사용
}

struct StoreSection {
    var identity: String = "main"
    var items: [StoreInfo]
}

extension StoreSection: AnimatableSectionModelType {
    typealias Item = StoreInfo

    init(original: StoreSection, items: [StoreInfo]) {
        self = original
        self.items = items
    }

 

변경 후 코드에서는 struct StoreSection 부분에서 init을 사용하지 않고,

identity에 직접 String 값을 입력하였다.

그 후 StoreInfo의 identity를 UUID().uuidString 대신 displayName을 사용해서 고유 식별자로 가게명을 사용하였다.

 

 

수정 후 테이블 뷰 애니메이션을 보면 불필요한 애니메이션이 사라지고,

정렬 시 옆으로 움직였던 셀들도 위, 아래로만 이동된다.


  👨🏻‍💻  오늘의 작업 

[ 1. searchTextBody 검색을 Circle에서 Rectangle로 변경 ]

 

[Refactor] Detail TableView 리팩토링 · Issue #109 · uddt-ds/EatsOkay

🛠️ Refactor Issue locationRestriction 처리 현위치 버튼 클릭 시 테이블 뷰 재로딩 방지 📝 To-do 가게 검색 로직 변경 (Circle -> Rectangle) RxDataSource identity 재설정

github.com

 

가게 정보 검색을 원형 검색에서 사각형 검색으로 변경

지도의 모양은 사각형인데 원형으로 가게 정보를 검색하면 지도상 빈 공간이 많이 생기는 문제가 있음.

또한 원형 검색 시 결과 개수가 부족하면 외부 지역의 검색 결과를 가져오기 때문에

사용자가 원하는 검색 결과가 아님.

따라서 가게 정보 검색을 사각형 검색으로 변경

 

 

[Refactor] #109 - 가게 검색 로직 변경 by heopill · Pull Request #117 · uddt-ds/EatsOkay

Circle 검색 로직에서 Rectangle 검색 로직으로 변경 📌 관련 이슈 closed: #109 📌 변경 사항 및 이유 가게 검색 로직 변경 현위치 버튼 클릭 시 줌 레벨 14.5로 변경 📌 PR Point Circle 검색 로직을 Rectangle

github.com

 

[ 2. RxDataSource Identity 재설정 ]

변경 전

extension StoreInfo: IdentifiableType {
    var identity: String { return UUID().uuidString } // 고유 식별자로 가게명 사용
}

struct StoreSection {
    var identity: String
    var items: [StoreInfo]

    init(items: [StoreInfo]) {
        self.identity = UUID().uuidString
        self.items = items
    }
}

extension StoreSection: AnimatableSectionModelType {
    typealias Item = StoreInfo
//    typealias Identity = UUID // Identity 타입을 UUID로 변경

    init(original: StoreSection, items: [StoreInfo]) {
        self = original
        self.items = items
    }

 

변경 후

extension StoreInfo: IdentifiableType {
    var identity: String { return displayName } // 고유 식별자로 가게명 사용
}

struct StoreSection {
    var identity: String = "main"
    var items: [StoreInfo]
}

extension StoreSection: AnimatableSectionModelType {
    typealias Item = StoreInfo

    init(original: StoreSection, items: [StoreInfo]) {
        self = original
        self.items = items
    }