Ios 更改NSArray后UITableView未更新
我对HTTP有异步请求,我想读取JSON并填充我的viewtable 我通过请求获取数据,我制作了NSArray,但我可以在函数中传递它,tableView numberofrowsin节只返回1,请帮助Ios 更改NSArray后UITableView未更新,ios,swift,uitableview,Ios,Swift,Uitableview,我对HTTP有异步请求,我想读取JSON并填充我的viewtable 我通过请求获取数据,我制作了NSArray,但我可以在函数中传递它,tableView numberofrowsin节只返回1,请帮助 import Foundation import UIKit class ThirdView : UITableViewController { var jsonz:NSArray = ["Ray Wenderlich"]; let url = NSURL(string: "http:/
import Foundation
import UIKit
class ThirdView : UITableViewController {
var jsonz:NSArray = ["Ray Wenderlich"];
let url = NSURL(string: "http://iweddings.ru/xmlrestaurant.json");
override func viewDidLoad() {
super.viewDidLoad()
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
let json = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as! NSArray
println(json)
// here i see in xCode output
// price = 4500;
// rating = 45;
// slogan = "\U041d\U0435\U043b\U0435\U0433\U0430\U043b\U044c\U043d\U043e";
// status = 1;
// type = 1;
// etc....
self.jsonz = json;
}
task.resume()
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1;
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
println(self.jsonz.count);
return self.jsonz.count;
// here i see always "1" ???? why?
}
NSArrayjsonz不会改变。
对不起,我说的是英语。下载json数据后,需要调用
reloadData()
方法:
class ThirdView: UITableViewController {
var jsonz: NSArray = ["Ray Wenderlich"]
let url = NSURL(string: "http://iweddings.ru/xmlrestaurant.json")
override func viewDidLoad() {
super.viewDidLoad()
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
let json = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as! NSArray
println(json)
self.jsonz = json;
self.tableView.reloadData()
}
task.resume()
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1;
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
println(self.jsonz.count);
return self.jsonz.count;
}
}
谢谢,现在它可以工作了,但是大约40秒。40秒后,我只看到一个电池,在这之后,所有6个电池都在加载。你知道为什么吗?当我使用非异步请求时,它是~4秒。对于所有加载。看起来您正在后台线程上更新tableView。将reloadData()移动到主线程上。我移动了40秒:(你是如何移动的?用你的更改更新你的代码,