【发布时间】:2017-03-30 04:44:23
【问题描述】:
我创建了一个简单的 json 应用程序并且工作正常,但是当应用程序进入后台数据未加载时,请有人建议我提供代码。
let task = URLSession.shared.dataTask(with: URL(string: "http://tour-pedia.org/api/getReviews?location=Rome&category=poi")!) { (data, response , error) in
if error != nil {
print(error?.localizedDescription ?? "")
}
if let resultArray = (try? JSONSerialization.jsonObject(with: data!, options: [])) as? [[String:Any]] {
for jsonreviews in resultArray {
let review = Review()
review.rating = jsonreviews["rating"] as? Int ?? 0
review.text = jsonreviews["text"] as! String
review.time = jsonreviews["time"] as! String
reviews.append(review)
}
DispatchQueue.main.async {
self.tableview.reloadData() // if you use tableview
}
}
}
task.resume()
【问题讨论】:
-
我注意到您正在后台线程上更新
reviews。如果您的UITableViewDataSource方法正在引用它,您确实应该构建一个本地数组,然后将其复制到主线程上的数据源(或以某种方式同步您对它的访问)。另外,reviews是全球性的吗?