我正在打电话给网络服务。他们在表格中加载数据,直到我滚动。我希望在响应到来时重新加载数据。我是Swift 2中的新手请帮助任何帮助。
这是我的代码:
let url : String = String(format: "http://api.nytimes.com/svc/news/v3/content/nyt/all/720.json?api-key=%@",apiKey)
t url1: NSURL = NSURL(string: url)!
let session = NSURLSession.sharedSession()
let task1 = session.dataTaskWithURL(url1, completionHandler: {
(data, response, error) -> Void in
do {
let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSDictionary
self.dict = jsonData;
self.array1 = (self.dict.objectForKey("results") as? NSMutableArray)!
print(self.array1)
self.table.reloadData()
} catch {
}
})
task1.resume()
extension ViewController1: UITableViewDelegate, UITableViewDataSource {
} func tableView(tView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.array1.count
}
func tableView(tView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let identifier = "CustumCell"
var cell: CustumCell! = tView.dequeueReusableCellWithIdentifier(identifier) as? CustumCell
if cell == nil {
var nib:Array = NSBundle.mainBundle().loadNibNamed("CustumCell", owner: self, options: nil)
cell = nib[0] as? CustumCell
}
cell.label.text = self.array1.objectAtIndex(indexPath.row).objectForKey("abstract") as? String
return cell
}
}
答案 0 :(得分:4)
您正在从完成处理程序运行table.reloadData()
。可能是代码没有在主线程上执行。所有UI内容都需要在主线程上完成。尝试强制reloadData在主线程上运行:
dispatch_async(dispatch_get_main_queue()) {
self.table.reloadData()
}
答案 1 :(得分:2)
MirekE说的是什么,除了为Swift 3更新,Xcode 8.2:
DispatchQueue.main.async {
self.table.reloadData()
}