import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tableview: UITableView!
var weatherList: [weatherJSON] = []
func downloadJSON() {
let jsonUrlString = "https://api.darksky.net/forecast/59c6b6b7efd5c3fc0f617338cfae6c48/40.7127,-74.0059"
guard let url = URL(string: jsonUrlString) else {return}
URLSession.shared.dataTask(with: url) { (data, response, err) in
guard let data = data else {return}
do {
let JSON = try JSONDecoder().decode(weatherJSON.self, from: data)
self.weatherList.append(JSON)
print(self.weatherList)
DispatchQueue.main.async {
self.tableview.reloadData()
}
} catch let jsonErr {
print("Error serializing json", jsonErr)
}
}.resume()
}
override func viewDidLoad() {
super.viewDidLoad()
downloadJSON()
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return weatherList.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! countryCell
cell.nameLabel?.text = "\(String(describing: weatherList[indexPath.row].latitude))"
return cell
}
}
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "segue1", sender: nil)
}
}
Изменить: я успешно вызвал данные JSON, используя интерполяцию строк -
cell.nameLabel?.text = "(Строка (описывающая: WeatherList[indexPath.row].широта))"
но теперь единственная информация, возвращающая в моем вызове что-либо, кроме нуля, - это широта и долгота. Почему единственное, что возвращается из моего вызова JSON, успешно равно нулю? Я что-то неправильно называю? Спасибо за вашу помощь. Если я должен сделать новый пост, пожалуйста, дайте мне знать. Я думаю, что это на ту же тему, поскольку это почти та же идея, что и исходная публикация, написанная мной вчера.
Сам Stackoverflow не позволит мне опубликовать сообщение, не добавив больше текста, но, поскольку я уже сказал все, что мне нужно было сказать, это просто наполнитель.
weatherList
загруженными данными? - person rmaddy   schedule 26.02.2019JSON
— это отдельный объект, аweatherList
вы объявили как массив. Ответ зависит от структуры структурыweatherJSON
. И какую информацию — их много — вы хотите отобразить? Кстати, имена структур должны начинаться с заглавной буквы. - person vadian   schedule 26.02.2019String(weatherList[indexPath.row].currently!.cloudCover)
. Вы должны объявитьcurrently
необязательным, чтобы избежать принудительного развертывания. Но у вас все еще есть проблема, заключающаяся в том, что ваш массив источников данных содержит только один элемент, потому что корневым объектом JSON погоды является словарь. - person vadian   schedule 26.02.2019cloudCover
тоже необязательно.String(weatherList[indexPath.row].currently!.cloudCover!)
. API-интерфейсы погоды отправляют надежные данные, объявляя свойства необязательными, насколько это возможно. - person vadian   schedule 26.02.2019weatherJSON
, ответить на вопрос практически невозможно. - person vadian   schedule 26.02.2019