[Feat] 스터디 입력 화면(1_2_study) 코드 정리
Taehyeon-Kim opened this issue · 4 comments
Taehyeon-Kim commented
todo
- post queue/search 연결 (스터디 목록 조회)
- post queue 연결 (새싹 찾기)
- 지금 주변에는 스터디 표시
- fromRecommend, fromQueueDB, fromQueueDBRequested 배열의 studylist
- 셀 클릭 시 내가 하고 싶은 스터디에 추가
logic
- arounded_study 배열
- wanted_study 배열 -> post 요청 시에 사용
- lat, long (전체적으로 가지고 있어야 할 위치 정보 <- 이전 화면에서 전달)
design
- cell type
- recommend : 추천
- arounded : 주변 새싹의
- wanted : 내가 하고 싶은
Taehyeon-Kim commented
중복 제거
extension Sequence where Element: Hashable {
func uniqued() -> [Element] {
var set = Set<Element>()
return filter { set.insert($0).inserted }
}
}
Taehyeon-Kim commented
나름대로 뷰 쪽에서 로직을 짜보려고 했던 부분
- 키워드 형태가 되게 여러가지로 오는데
- 일단 추천 키워드
- 그리고 Queue(주변 스터디, 요청 받은 스터디)에 들어가 있는 키워드
- 키워드 중복 제거
- 추천 키워드가 먼저 정렬되도록 해야 함
private func makeAroundedKeywords(with dto: SearchResponseDTO) -> [KeywordItemViewModel] {
let fromRecommend = dto.fromRecommend.map { KeywordItemViewModel(contents: $0, keywordType: .recommended) }
let fromQueueDB = dto.fromQueueDB.flatMap { $0.studylist.map { KeywordItemViewModel(contents: $0, keywordType: .arounded) } }
let fromQueueDBRequested = dto.fromQueueDBRequested.flatMap { $0.studylist.map { KeywordItemViewModel(contents: $0, keywordType: .arounded) } }
var results = fromRecommend + fromQueueDB + fromQueueDBRequested
results = removeDuplicatedKeywords(items: results)
self.items.accept([.arounded(results.map {.keyword($0)})])
return results
}
private func removeDuplicatedKeywords(items: [KeywordItemViewModel]) -> [KeywordItemViewModel] {
var items = items
items.removeAll { viewModel in
viewModel.contents == "anything" ||
viewModel.contents.isEmpty
}
let result = Array(Set(items))
return result.sorted { first, _ in
return first.keywordType == .recommended
}
}
Taehyeon-Kim commented
- RxDataSources를 쓰려고 한 부분
- SectionModelType을 채택해서 Section에 대한 열거형 구현해준 부분
- Cell 마다 ViewModel을 각각 가지고 있어서 내부 처리를 해주려고 한 부분
Reference
- https://github.com/zafarivaev/RxDataSources-Demo
- https://betterprogramming.pub/how-to-implement-uitableview-and-uicollectionview-with-rxdatasources-1afcd68729bf
- https://medium.com/eonfluxor/from-uicollectionview-datasource-to-dynamic-rxswift-rxdatasources-17023969bf80
- https://kirkim.github.io/swift/2022/08/10/rxdatasources.html
Taehyeon-Kim commented
- 이제 섹션 헤더를 어떻게 하면 될지만 고민해보면 됨