我尝试将某些数据显示到UITableView
,但数据未显示在UITableView
中。数据格式为JSON。
我写入UITableView
的代码是:
var mainList:[[String:AnyObject]] = []
@IBOutlet var listCountriesTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.listCountriesTableView.dataSource = self
self.listCountriesTableView.delegate = self
let urlPath = "http://data.okfn.org/data/core/country-codes/r/country-codes.json"
let url = NSURL(string: urlPath)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url!, completionHandler: { data, response, error -> Void in
if (error != nil) {
print(error)
} else {
do {
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [[String:AnyObject]]
for country in jsonResult {
let countryName = country["name"]!
let countryDial = country["Dial"]!
let nameDial = ["name":countryName, "Dial":countryDial]
self.mainList.append(nameDial)
print(country["name"]!, country["Dial"]!)
}
} catch let error as NSError {
print(error)
}
}
})
task.resume()
}
}
extension ListOfCountriesViewController: UITableViewDataSource, UITableViewDelegate {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.mainList.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellList = tableView.dequeueReusableCellWithIdentifier("cellListCountries")! as UITableViewCell
let data = mainList[indexPath.row]
let countryTableView = data["name"]
let codeTableView = data["Dial"]
cellList.textLabel!.text = countryTableView
cellList.detailTextLabel!.text = codeTableView
return cellList
}
print(country["name"]!
,country["Dial"]!)
向我显示了调试区域中正确的国家/地区列表和拨号代码,但未在UITableView
中显示。
调试区域: 阿富汗93 阿尔巴尼亚355 阿尔及利亚213 美属萨摩亚1-684 安道尔376 安哥拉244 安圭拉1-264 南极洲672 安提瓜和巴布达1-268 阿根廷54 亚美尼亚374 阿鲁巴297
任何人都知道我的问题是什么? 谢谢!
答案 0 :(得分:0)
您的数据已加载异步。当他们准备好UITableView已经显示。这就是为什么你应该重新加载它。拨打:
[self.listCountriesTableView reloadData];
或
self.listCountriesTableView.reloadData()
在解析数据之后。