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()
}
}
所以我的问题是我的 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()
}
}