У меня есть список Json с аэропортами, который я могу просмотреть в виде списка.
Json список:
[
{
"name": "Hartsfield Jackson Atlanta Intl",
"city": "Atlanta",
"country": "United States",
"iata_code": "ATL",
"_geoloc": {
"lat": 33.636719,
"lng": -84.428067
},
"links_count": 1826,
"objectID": "3682"
},
{
"name": "Chicago Ohare Intl",
"city": "Chicago",
"country": "United States",
"iata_code": "ORD",
"_geoloc": {
"lat": 41.978603,
"lng": -87.904842
},
"links_count": 1108,
"objectID": "3830"
},
]
Мой код выглядит так:
struct Model: Codable, Identifiable, Hashable {
enum CodingKeys: CodingKey {
case name
case city
case country
case iata_code
}
var id = UUID()
var name, city, country, iata_code: String
}
class Json: ObservableObject {
@Published var json = [Model]()
init() {
load()
}
func load() {
let path = Bundle.main.path(forResource: "Airports", ofType: "json")
let url = URL(fileURLWithPath: path!)
URLSession.shared.dataTask(with: url) { (data, responce, error) in
do {
if let data = data {
let json = try JSONDecoder().decode([Model].self, from: data)
DispatchQueue.main.sync {
self.json = json
}
} else {
print("no Data")
}
} catch {
print(error)
}
}.resume()
}
}
И тело:
struct ContentView: View {
@ObservedObject var Airport = Json()
var body: some View {
List(Airport.json) { item in
VStack(alignment: .leading) {
Text(item.iata_code)
Text(item.name)
}
}
}
}
Это дает мне список с кодами Iata и названиями аэропортов.
У меня вопрос, как мне сделать этот список доступным для поиска? по имени, коду или другому. Я хочу сделать что-то похожее на агачу путешествий. Я новичок в SwiftUI. Любая помощь будет принята с благодарностью.