Я пишу простую программу на Swift, которая анализирует JSON из загруженного файла и возвращает данные в View Controller.Когда я пытаюсь перейти к следующему коду во время отладки, он правильно анализирует .Когда я пытаюсь запустить приложение в обычном режиме, оно вообще не анализирует , а datatask
равно нулю.URL-адрес не является нулевым, когда я отлаживал его.
За пределами класса Model:
protocol FeedProtocol {
func eventsRecieved(events:[Event])
}
Внутри класса Model:
var delegate:FeedProtocol?
func getRemoteJsonFile() {
let url = URL(string: stringUrl)
guard url != nil else {
print("Couldn't get a URL object")
return
}
// Get a URLSession object
let session = URLSession.shared
// The line below fires, and goes down to dataTask.resume when running program
let dataTask = session.dataTask(with: url!) { (data, response, error) in
if error == nil && data != nil {
// Create a json decoder
let decoder = JSONDecoder()
do {
// Try to parse the data
let array = try decoder.decode([Event].self, from: data!)
DispatchQueue.main.async {
self.delegate?.eventsRecieved(events: array)
}
}
catch {
print("Couldn't parse the json")
}
}
}
// Call resume on the DataTask object
dataTask.resume()
}
В ViewController:
var eventsRetrieved: [Event] = []
func eventsRecieved(events: [Event]) {
eventsRetrieved = events
}