无法使用 Alamofire 和 SwiftyJSON 在 tableviewcell 中加载 JSON 数据
Posted
技术标签:
【中文标题】无法使用 Alamofire 和 SwiftyJSON 在 tableviewcell 中加载 JSON 数据【英文标题】:unable to load JSON data in tableviewcell using Alamofire & SwiftyJSON 【发布时间】:2018-03-26 04:07:48 【问题描述】:我想在 textLabel 和 detailTextLabel 中加载加密货币的名称和符号
TableViewController.swift :-
import UIKit
import Alamofire
import SwiftyJSON
class TableViewController: UITableViewController
var fetchCoinInfo = [[String: AnyObject]]()
let url = "https://api.coinmarketcap.com/v1/ticker/"
override func viewDidLoad()
super.viewDidLoad()
getCoinData(url: url)
self.tableView.reloadData()
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int
// #warning Incomplete implementation, return the number of sections
return 1
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
// #warning Incomplete implementation, return the number of rows
return fetchCoinInfo.count
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
cell.textLabel?.text = fetchCoinInfo[indexPath.row]["name"] as? String
cell.detailTextLabel?.text = fetchCoinInfo[indexPath.row]["symbol"] as? String
return cell
使用 Alamofire :-
func getCoinData(url: String)
Alamofire.request(url, method: .get)
.responseJSON response in
if response.result.isSuccess
print("Sucess! Got the data")
let coinJSON : JSON = JSON(response.result.value!)
print(coinJSON)
self.updateCoinData(json: coinJSON)
else
print("Error: \(String(describing: response.result.error))")
self.tableView.reloadData()
Using SwiftyJSON :-
func updateCoinData(json : JSON)
if let coinData = json[].arrayObject
print(coinData)
self.fetchCoinInfo = coinData as! [[String: AnyObject]]
else
print("cannot connect to the server")
【问题讨论】:
上述代码遇到什么问题 你的 fetchCoinInfo 填写成功了吗 textLabel 和 detailTextLabel 没有显示任何内容,是的,它已成功填充 我认为您错过了重新加载表格 【参考方案1】:将此行放入 updateCoindata
self.tableView.reloadData()
func updateCoinData(json : JSON)
if let coinData = json[].arrayObject
print(coinData)
self.fetchCoinInfo = coinData as! [[String: AnyObject]]
self.tableView.reloadData()
else
print("cannot connect to the server")
【讨论】:
以上是关于无法使用 Alamofire 和 SwiftyJSON 在 tableviewcell 中加载 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 AlamoFire 和 SwiftyJSON 解析 JSON
无法使用“((Any))”类型的参数列表调用“JSON” - 使用 AlamoFire 和 SwiftyJSON