Как реализовать UISearchBar для фильтрации имени или заглавной буквы JSON, используя JSON Декодер в быстром iOS приложении. Я хочу реализовать UISearchBar и результаты поиска или фильтровать результаты, используя имя из JSON Data.
import UIKit
Структура создана
struct jsonstruct:Decodable
{
let name:String
let capital:String
}
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate, UISearchBarDelegate, UISearchControllerDelegate, UISearchDisplayDelegate {
Создание выхода для TableView и SearchBar
@IBOutlet var tableview: UITableView!
@IBOutlet var searchBar: UISearchBar!
Объявление JSON
var arrdata = [jsonstruct]()
Функция для получения данных
func getdata()
{
let url = URL(string: "https://restcountries.eu/rest/v2/all")
URLSession.shared.dataTask(with: url!)
{
(data, response, error) in
do
{
if error == nil
{
self.arrdata = try
JSONDecoder().decode([jsonstruct].self, from: data!)
for mainarr in self.arrdata
{
print(mainarr.name,":",mainarr.capital as Any)
DispatchQueue.main.async
{
self.tableview.reloadData()
}
}
}
}
catch
{
print(error.localizedDescription)
}
}.resume()
}
ПРОСМОТР ТАБЛИЦЫ
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.arrdata.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:TableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! TableViewCell
cell.label1.text = "Name: \(arrdata[indexPath.row].name)"
cell.label2.text = "Capital: \(arrdata[indexPath.row].capital)"
return cell
}
Функция переопределения
override func viewDidLoad()
{
getdata()
}