Отображение данных Json в метках в табличном представлении - PullRequest
0 голосов
/ 05 мая 2018

У меня есть данные JSON, которые мне нужны, чтобы сопоставить их с метками в виде таблицы, как показано на рисунке ниже: просмотр таблицы

и у меня есть этот снимок кода в 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)

    }

и это URL 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

}

1 Ответ

0 голосов
/ 05 мая 2018

Чтобы отобразить данные в табличном представлении, сначала необходимо выполнить анализ json с URL-адреса. Вы можете сделать это, используя следующий код.

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()


    }

Используя этот код, вы получите массив json в переменной jsonresponse, возьмете один массив, сохраните этот ответ в этом массиве. В методе numberofrowsinsection для tableview задайте этот массив, а в методе cellforrowatindexpath для uitableview извлеките объект из этого массива и отобразите в этикетках, которые вы приняли согласно вашему требованию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...