본문 바로가기
UIKit/기본

서치바로 원하는 검색어에 맞춰 공공 API 정보 얻어오기

by 밤새는탐험가 2024. 4. 20.

매인이 되는 ViewController파일 내에 서치컨트롤러 인스턴스를 생성한다. 

서치바 설정 관련된 함수를 선언한다. 

 

// MARK: - 서치 컨트롤러 생성
let searchController = UISearchController()

// 서치바 셋팅
func setupSearchBar() {

    navigationItem.searchController = searchController

    // 🟥 단순 서치바 사용
    searchController.searchBar.delegate = self
    
    // 대문자 생성 방지
    searchController.searchBar.autocapitalizationType = .none
}

// MARK: - 네트워크 매니저 선언 (싱글톤)
var networkManager = NetworkManager.shared

// MARK: - 영화 데이터를 다루기 위한 배열 선언 (빈 배열로 생성)
var movieArray: [Movie] = []

 

 

서치바의 대리자를 ViewController로 선언함에 따라 이와 관련해서 ViewController를 extension 하여 

함수를 선언한다. 

 

extension ViewController: UISearchBarDelegate {
    
    // 유저가 글자를 입력할 때마다 결과가 나오는 메서드
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        print(searchText)
        
        self.movieArray = []
        
        // 네트워킹 시작
        networkManager.fetchMovie(searchTerm: searchText) { result in
            switch result {
            case.success(let movieDatas):
                self.movieArray = movieDatas
                DispatchQueue.main.async {
                    self.movieTableView.reloadData()
                }
            case.failure(let error):
                print(error.localizedDescription)
            }
        }
    }
}