URLSession.shared.dataTask работает неправильно - PullRequest
0 голосов
/ 29 ноября 2018

Я пишу простую программу на 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...