在表格视图的标签中显示 Json 数据
Posted
技术标签:
【中文标题】在表格视图的标签中显示 Json 数据【英文标题】:Showing Json data in labels in table view 【发布时间】:2018-05-05 05:05:49 【问题描述】:我有 json 数据,我需要将它们与表格视图中的标签进行匹配,如下图所示: table view
我在 UITableViewCell 中的代码上有这个快照
import UIKit
class TableViewCell: UITableViewCell
@IBOutlet weak var CompanyLabel: UILabel!
@IBOutlet weak var askPriceLabel: UILabel!
@IBOutlet weak var lastPricelabel: UILabel!
@IBOutlet weak var bidPriceLabel: UILabel!
@IBOutlet weak var highPriceLabel: UILabel!
override func awakeFromNib()
super.awakeFromNib()
// Initialization code
override func setSelected(_ selected: Bool, animated: Bool)
super.setSelected(selected, animated: animated)
这是 JSON 网址 http://tickerchart.com/interview/marketwatch.json
我在 uitabledelegate 中的尝试:
class ViewController: UIViewController , UITableViewDataSource , UITableViewDelegate
var cellData = [TableData]()
.
.
func getTableJSON(completed : @escaping() -> ())
print("getJSON here")
let url1 = URL(string:"http://tickerchart.com/interview/marketwatch.json")
let task = URLSession.shared.dataTask(with: url1!) (data, respond , error) in
if error == nil
do
self.cellData = try JSONDecoder().decode([TableData].self, from: data!)
DispatchQueue.main.async
completed()
catch
task.resume()
.
.
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
let numberOfRows = cellData.count
return numberOfRows
// create a cell for each table view row
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
cell.setupCell(adv: self.cellData[indexPath.row])
return cell
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
return 230
// method to run when table view cell is tapped
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
print("You tapped cell number \(indexPath.row).")
我创建了一个名为 tabelData 的类,其中包含
import Foundation
struct TableData : Decodable
let name: String
let askPrice: Int
let lastPrice: Int
let bidPrice: Int
let highPrice: Int
【问题讨论】:
解析JSON的问题是asked very frequently 是的,但该方法不能将它们映射到多标签 请在此处添加您的 uitableview 委托方法代码,这样我就可以看到您为什么无法映射标签 @Bhoomi,谢谢,我在那里添加了我的尝试 【参考方案1】:要在tableview中显示数据,首先需要从URL中进行json解析。您可以使用以下代码来完成。
override func viewDidLoad()
super.viewDidLoad()
self.getJsonData()
// Do any additional setup after loading the view.
func getJsonData()
let url = "http://tickerchart.com/interview/marketwatch.json"
let task = URLSession.shared.dataTask(with: URL(string:url)!) (data, response, error) in
if((error) != nil)
guard let data = data else
print("no data found")
return;
do
let jsonresponse = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
//print("json resonse is",jsonresponse as! NSDictionary)
print("json resonse is",jsonresponse as! NSMutableArray)
catch let jsonerror
print("json error");
task.resume()
使用此代码,您将在 jsonresponse 变量中获取 json 数组,取一个数组,将此响应存储在该数组中。在 tableview 的 numberofrowsinsection 方法中给出该数组计数,并在 uitableview 的 cellforrowatindexpath 方法中,从该数组中获取对象并显示在您根据要求使用的标签中。
【讨论】:
太好了,我可以成功获取json,但我的问题是如何匹配每个正确的标签,请你简单解释一下,我是swift的新手。谢谢 你写过 uitableview 委托方法吗?如果是,请提供该代码。以上是关于在表格视图的标签中显示 Json 数据的主要内容,如果未能解决你的问题,请参考以下文章