如何使用SearchBar for API?

时间:2016-06-01 16:50:29

标签: ios swift

 // MARK: - Search

    func updateSearchResultsForSearchController(searchController: UISearchController) {
        if self.searchController.searchBar.text!.characters.count < 3 {
            print("<3")
        }else{
        Kinopoisk.searchFilmByString(self.searchController.searchBar.text!) { (JSON) in
            for index in 0...5 {
                let nameRU = JSON["searchFilms"][index]["nameRU"].string ?? ""
                let nameEN = JSON["searchFilms"][index]["nameEN"].string ?? ""
                let plusString = "\(nameRU)/\(nameEN)"
                self.movies.append(plusString)
                print(self.movies[index])
            }
        }
        }
        self.filteredMovies = self.movies.filter { (movie: String) -> Bool in
            if movie.lowercaseString.containsString(self.searchController.searchBar.text!.lowercaseString) {
                return true
            } else {
                return false
            }
        }
        self.resultsController.tableView.reloadData()
    }

enter image description here

我有两个数组(电影和filteredMovies)。第一个记录来自JSON(API)的数据,第二个包含来自第一个数组的排序数据。

问题1: 当我开始进入searchBar时,字段开始从API下载到第一个数组,但如果我向字段添加新字符,旧数据将保留。 如何在搜索请求后删除第一个数组中的数据?

问题2: API对搜索的限制为&gt; 2个字符 - 如何仅在SearchBar.text中有两个以上的符号时才开始搜索?

问题3: 仅当我从输入中取消选择时才开始搜索。 - 如何在键入时搜索而不是在之后搜索?

1 个答案:

答案 0 :(得分:2)

如果你想做正确的事情,你应该使用反应式框架。大多数人现在热衷于ReactiveCocoa,但很多人也使用RxSwift。我更像是一个RAC人,所以我会指出你的方向。

Colin Eberhardt写了blog post关于制作一个app,它基本上可以通过Twitter搜索来完成。他还有另一个类似的RAC flickr app。他使用的RAC3与RAC4略有不同(主要是语法更改)。我强烈建议您在应用中学习并开始实施功能反应技术。

干杯!