Swift TableView不会返回numbersOfRow

时间:2017-05-05 16:03:12

标签: swift tableview swifty-json

import UIKit
import SwiftyJSON

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{        
    @IBOutlet weak var tableView: UITableView!    
    var mass = [String]()
    var jDatas = datas()    
    override func viewDidLoad() {
        super.viewDidLoad()        
        let url = URL(string: "https://www.quandl.com/api/v3/datasets/WIKI/AAPL.json")
        let task = URLSession.shared.dataTask(with: url!) {(data, response, error) in
            if error != nil {
                print("error")
            } else {
                if let content = data {
                    let myJson = JSON(data: content)                    
                    for item in myJson["dataset"]["data"] {                        
                        let dates = "open \(String(describing: item.1[1].string)))"                 
                        self.mass.append(dates)                      
                    }       
                }
            }
        }
        task.resume()
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return mass.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! SimpleTableViewCell
        cell.datasLabel?.text = "some text"
        return cell
    }
}

所以我的问题是numberOfRowInSection不起作用,我尝试了一切,有人可以说这是什么问题吗?

当我试图调试代码时,它说我的大量的

中有0

1 个答案:

答案 0 :(得分:2)

您忘记在tableView关闭后的for循环后重新加载dataTask,所以只需在主线程上重新加载tableView

for item in myJson["dataset"]["data"] {                        
   let dates = "open \(String(describing: item.1[1].string)))"                 
   self.mass.append(dates)                      
}
DispatchQueue.main.async {
    self.tableView.reloadData()
}