Я впервые работаю с JSON.У меня есть файл JSON, чтобы связать города и страны с часовыми поясами.Вот пример содержимого.
[
{
"name": "Abidjan",
"country": "Ivory Coast",
"timeZoneName": "Africa/Bamako"
},
{
"name": "Abu Dhabi",
"country": "U.A.E.",
"timeZoneName": "Asia/Dubai"
}
]
Я пытаюсь использовать codable для разбора файла, но функция, которую я использую для разбора файла, не будет работать.У меня есть структура для каждого экземпляра в файле.
struct LoadedTimeZone: Codable {
var name: String
var country: String
var timeZoneName: String
}
, и у меня есть структура для декодированного содержимого для загрузки непосредственно в
struct LoadedTimeZones: Codable {
var results: [LoadedTimeZone]
}
В viewDidLoad моего UITableViewController, ядобавил этот код:
if let url = Bundle.main.url(forResource: "CitiesAndTimeZones", withExtension: "json") {
if let data = try? Data(contentsOf: url) {
parse(json: data)
}
}
и вот функция parse (json: Data)
func parse(json: Data) {
let decoder = JSONDecoder()
if let jsonTimeZones = try? decoder.decode(LoadedTimeZones.self, from: json) {
timeZones = jsonTimeZones.results
tableView.reloadData()
}
}
timeZones объявлена как var timeZones = [LoadedTimeZone]()
прямо над viewDidLoad.
Из некоторой отладки, которую я сделал, кажется, что jsonTimeZones возвращает ноль.Я рассмотрел несколько случаев на стеке потока и через Интернет, и то, что я сделал, кажется, не сильно отличается.
Буду очень признателен за любую помощь.