Swift TableView 不返回 numbersOfRow

Posted

技术标签:

【中文标题】Swift TableView 不返回 numbersOfRow【英文标题】:Swift TableView doesn't return numbersOfRow 【发布时间】:2017-05-05 16:03:12 【问题描述】:
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】:

您忘记在 dataTask 的闭包中的 for 循环之后重新加载 tableView,所以只需在主线程上重新加载 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()

【讨论】:

tnx,它的工作)但现在当我试图在 tableView 中使用我的大量时,它说 open nil) @SerjSemenov 欢迎朋友,那是因为数组不包含字符串值,但它是数字尝试这样let dates = "open \(String(item.1[1].doubleValue)))" 天哪,我没注意到,tnx 很多)

以上是关于Swift TableView 不返回 numbersOfRow的主要内容,如果未能解决你的问题,请参考以下文章

Swift 多个子视图并返回到原始 TableView

Swift tableView.dequeueReusableCell 永不返回零

Swift:选择搜索结果后返回tableview

IOS swift如何使用返回的Json数据填充我的TableView

Swift 5:从 tableView numberOfRowsInSection 返回数组计数时索引超出范围

iOS:tableView.reloadData() 在 swift3 中不起作用