-
Notifications
You must be signed in to change notification settings - Fork 6
산 목록 검색
MINRYUL edited this page Nov 11, 2021
·
5 revisions
저자: S009_김민창
- 너무 느리다...
- 산 목록 화면에 들어간다.
- 산 목록 검색 기능을 사용한다.
- 한글자 한글자 검색할 때마다 입력이 느려짐.
- 맞는 것 같음 그러면 이미 진행중인 Task를 지우고 다시 진행하면 되지 않을까?
- 일단 동기적으로 진행되는 것이라 Task를 지우고 다시 실행할 수 없음
- 비동기로 해도 글자 하나 마다 로직이 실행됨. 똑같이 오버해드가 있을 수도 있다고 판단.
- 디바운스를 걸면 일단 사용자가 입력이 멈췄을 때에 맞춰 검색이 가능하다고 판단.
- 디바운스를 걸기 위해 ViewModel에
@Published var mountainName: String?
를 선언하고 Controller에서 바인딩을 할 때 디바운스를 걸어주면 되겠다 판단.
extension MountainListViewController: UISearchResultsUpdating {
func updateSearchResults(for searchController: UISearchController) {
guard let mountainName = searchController.searchBar.text else { return }
self.viewModel?.mountainName = mountainName
}
}
- searchBar의 text가 바뀔 때마다 ViewModel에 알려준다.
self.viewModel?.$mountainName
.debounce(for: 0.7, scheduler: RunLoop.main)
.sink { [weak self] _ in
self?.viewModel?.findMountains()
}
.store(in: &subscriptions)
- 디바운스를 0.7초 main 스레드에 걸어서 사용자가 입력을 멈추고 0.7초 뒤에 산 목록을 찾는 방식으로 진행.
func findMountains() {
guard let name = mountainName else { return }
self.useCase.findMountains(name: name) { [weak self] mountains in
self?.mountains = mountains
}
}
- 0.7초가 지나면 산을 찾는 로직을 실행 시킴.
- 검색 된 산 목록을 다시 snapShot을 만들어 diffable datasource에 넣으면 해결
- 컴바인에는 많은 좋은 기능이 있는데 그것을 다 쓰지 못하는 느낌.. 공부가 필요하다..
트러블 슈팅
회의록
- 2021-10-25(월)
- 2021-10-26(화)
- 2021-10-27(수)
- 2021-10-28(목)
- 2021-11-01(월)
- 2021-11-02(화)
- 2021-11-03(수)
- 2021-11-04(목)
- 2021-11-08(월)
- 2021-11-09(화)
- 2021-11-10(수)
- 2021-11-11(목)
- 2021-11-15(월)
- 2021-11-16(화)
- 2021-11-17(수)
- 2021-11-18(목)
- 2021-11-22(월)
- 2021-11-23(화)
- 2021-11-24(수)
- 2021-11-25(목)
- 2021-11-29(월)
- 2021-11-30(화)
- 2021-12-01(수)
- 2021-12-02(목)
스크럼
- 2021-10-26(화)
- 2021-10-27(수)
- 2021-10-28(목)
- 2021-10-29(금)
- 2021-11-01(월)
- 2021-11-02(화)
- 2021-11-03(수)
- 2021-11-04(목)
- 2021-11-08(월)
- 2021-11-09(화)
- 2021-11-10(수)
- 2021-11-11(목)
- 2021-11-15(월)
- 2021-11-16(화)
- 2021-11-17(수)
- 2021-11-18(목)
- 2021-11-22(월)
- 2021-11-23(화)
- 2021-11-24(수)
- 2021-11-25(목)
- 2021-11-29(월)
- 2021-11-30(화)
- 2021-12-01(수)