URLSession.shared.dataTask无法正确触发

时间:2018-11-28 21:39:09

标签: ios json swift

我正在用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
}

0 个答案:

没有答案