UISearchBar 通过 UITableView 和 JSON

UISearchBar via UITableView with JSON

UISearchBar 无法执行搜索,怎么了?

我正在寻找有关使用 json 进行搜索的教程,但我的代码已显示在 table 视图中但无法搜索。我是 iOS 开发者世界的新手。

import UIKit

class updatedata: UIViewController,UITableViewDataSource, UISearchBarDelegate{

   @IBOutlet weak var searchbarr: UISearchBar!
   private var actors : [listpeserta]! = []
   private var realdata : [listpeserta]! = []
   var searching = false
   
   @IBOutlet weak var tableView: UITableView!
   override func viewDidLoad() {
       super.viewDidLoad()
       let url : URL = URL(string: "link")!
       var request : URLRequest = URLRequest (url: url)
       request.httpMethod = "GET"
       
       
       NSURLConnection.sendAsynchronousRequest(request, queue: .main) { (response, data, error) in
           guard let data = data else {
               print(error)
               return
           }
           let responseString : String! = String(data : data, encoding: .utf8)
           do {
               
               let jsonDecoder : JSONDecoder = JSONDecoder()
               self.actors = try jsonDecoder.decode([listpeserta].self, from: data)
               self.realdata = self.actors
               self.tableView.reloadData()
           }catch{print(error.localizedDescription)}
       }
   }
   func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       if searching {return realdata.count}
       else
       { return actors.count}
   }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
       
       if searching {
       cell.textLabel?.text = realdata[indexPath.item].nama
       }else
       {cell.textLabel?.text = actors[indexPath.item].nama}
       
       return cell
    }
   
   
   func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
       realdata = actors.filter({[=11=].nama.prefix(searchText.count) == searchText.lowercased()})
       searching = true
       tableView.reloadData()
   }
   func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
       searching = false
       searchBar.text = ""
       tableView.reloadData()
   }
     
}

这是,class listpeserta.swift

import Foundation

class listpeserta: Codable {
    public var nama : String!
}

您似乎缺少 searchBar 的委托。当你需要将任务/职责分配给另一个对象时,记得添加委托。

例如,在您的 viewDidLoad 中:

searchbarr.delegate = self

p.s。 tableView.dataSource = 自己也不见了。