문제

검색 기능 구현하다 보니까 UISearchController 사용하는 샘플 프로젝트를 봤다. 보니까 searchbar delegate 를 구현하는 방식보다 훨 나아 보여서 사용해 보기로 결정.

기능을 이해하고 나니까 다음 같은 플로우였으면 좋겠다고 생각했음.

search bar 이벤트 처리 흐름

  1. seacrch controller의 search bar가 입력을 받는다.
  2. Search controller는 입력이 화면이 표시되기 전에 searchResultsUpdaterupdateSearchResults(for:) ****인터페이스를 호출한다.
  3. searchResultsUpdater, UISearchResultsUpdating ****구현체는 자신이 참조할 수 있는 use case의 메서드를 호출한다.
  4. use case는 presenter의 present 로직을 호출한다.

목록을 표시하던 화면에 그대로 검색 결과를 표시한다면 아무런 문제가 없지만, 만약 검색 결과는 다른 UI로 보여주고 싶다면 결과를 표시할 새로운 view controller를 구현해야 한다.

그렇다면 입력된 내용을 바탕으로 항목을 필터링하는, 검색하는 로직은 목록 화면, 결과 화면, 그리고 UISearchController 중 어느 곳에 구현되어야 할까?

대안

<aside> 📌

읽기 전에 주의할 것


1번

search-usecase-01.drawio.png


2번 (1번의 변형)

search-usecase-04.drawio.png


3번

search-usecase-03.drawio.png


4번