// 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()
}
我有两个数组(电影和filteredMovies)。第一个记录来自JSON(API)的数据,第二个包含来自第一个数组的排序数据。
问题1: 当我开始进入searchBar时,字段开始从API下载到第一个数组,但如果我向字段添加新字符,旧数据将保留。 如何在搜索请求后删除第一个数组中的数据?
问题2: API对搜索的限制为&gt; 2个字符 - 如何仅在SearchBar.text中有两个以上的符号时才开始搜索?
问题3: 仅当我从输入中取消选择时才开始搜索。 - 如何在键入时搜索而不是在之后搜索?
答案 0 :(得分:2)
如果你想做正确的事情,你应该使用反应式框架。大多数人现在热衷于ReactiveCocoa,但很多人也使用RxSwift。我更像是一个RAC人,所以我会指出你的方向。
Colin Eberhardt写了blog post关于制作一个app,它基本上可以通过Twitter搜索来完成。他还有另一个类似的RAC flickr app。他使用的RAC3与RAC4略有不同(主要是语法更改)。我强烈建议您在应用中学习并开始实施功能反应技术。
干杯!