Swift 4 UITableView 未显示 JSON 结果

Swift 4 UITableView not showing JSON results

所以我的问题是我的 JSON 没有显示在我的 tableView 中,但它在终端中打印得很好。我尝试了一些方法,但似乎根本无法在 Table 中打印出来。我的问题可能是什么?

import UIKit
import Alamofire
import SwiftyJSON

class ViewController: UIViewController, UITableViewDelegate {


@IBOutlet var tableView: UITableView!

var arrRes = [[String:AnyObject]]() //Array of dictionary


override func viewDidLoad() {
    super.viewDidLoad()
    downloadJSON()
    self.tableView.reloadData()
    }


func downloadJSON() {
    Alamofire.request(API_URL).responseJSON { (responseData) -> Void in
        if ((responseData.result.value) != nil) {
            let swiftyJsonVar = JSON(responseData.result.value!)

            if let resData = swiftyJsonVar["race_results"].arrayObject {
                self.arrRes = resData as! [[String: AnyObject]]
                print("resData", resData)
                if self.arrRes.count > 0 {
                    print("Table Updating")
                    print("Table should be updated")
                    self.tableView.reloadData()

                }
            }
            print("new array3")
            print(self.arrRes.count)
        }
        print("new array 2")
        print(self.arrRes.count)
        self.tableView.reloadData()
    }
}


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.arrRes.count
}



func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> TableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
    var dict = self.arrRes[indexPath.row]
    cell.name.text = dict["Full_Name"] as! String
    cell.club.text = dict["Club"] as! String
    cell.position.text = dict["Finish_Position"] as! String
    return cell
}

您必须在 viewDidLoad

中设置数据源
self.tableView.dataSource = self

//

class ViewController: UIViewController, UITableViewDelegate , UITableViewDataSource {....}

下面是固定代码

lass ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

@IBOutlet var tableView: UITableView!

var arrRes = [[String:AnyObject]]() //Array of dictionary

override func viewDidLoad() {
super.viewDidLoad()

 self.tableView.dataSource = nil
   downloadJSON()

}
func downloadJSON() {
   Alamofire.request(API_URL).responseJSON { (responseData) -> Void in
    if ((responseData.result.value) != nil) {
 let swiftyJsonVar = JSON(responseData.result.value!)
if let resData = swiftyJsonVar["race_results"].arrayObject {
            self.arrRes = resData as! [[String: AnyObject]]
            print("resData", resData)
            if self.arrRes.count > 0 {
                print("Table Updating")
                print("Table should be updated")
self.tableView.dataSource = self

self.tableView.reloadData()

            }
        }
 print("new array3")
        print(self.arrRes.count)
    }
    print("new array 2")
    print(self.arrRes.count)
self.tableView.dataSource = self

    self.tableView.reloadData()
}

}