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