【问题标题】:I need to display the parsed data into a TableVIew我需要将解析后的数据显示到 TableVIew
【发布时间】:2018-12-29 20:13:11
【问题描述】:

我有以下代码来解析来自网站的 JSON 数据。 我以字典的形式提取数据。现在我需要将字典的每个元素显示为 Tableview 中的一个单元格。以下是我的代码:

class OrdersSummaryFetchservice{
let shopifyOrdersListURL: URL?
var provinceNamesDictionary = [String: Int]()

init(URL: URL) {
    shopifyOrdersListURL = URL
}


func fetchOrdersSummary(completion: @escaping (OrdersSummary) -> Void) {
    Alamofire.request(shopifyOrdersListURL!).responseJSON { (response) in
        if let orderListInJSON = response.result.value as? [String:Array<Any>]{
            if let orderListArray = orderListInJSON["orders"] {
                for index in 0...(orderListArray as Array).count-1 {
                    if let order = orderListArray[index] as? [String:Any] {
                        if let billingAddress = order["billing_address"] as? [String:Any] {
                            if let provinceName = billingAddress["province"] as? String {
                                if (self.provinceNamesDictionary[provinceName] == nil) {
                                    self.provinceNamesDictionary[provinceName] = 1
                                } else {
                                    let orders = self.provinceNamesDictionary[provinceName]!
                                    self.provinceNamesDictionary[provinceName] = orders + 1
                                }
                            }
                        }
                    }
                }
                let ordersSummary = OrdersSummary(provinceNameDictionary: self.provinceNamesDictionary)
                completion(ordersSummary)
            }
        }
    }
}
}

所以,现在我在 ordersSummary 中有一本字典。 如何在 TableView 中显示它

【问题讨论】:

  • 你在 Google 上搜索过关于 UITableView 的教程吗?
  • 是的。就我而言,JSON 有点复杂,经过一些操作后,我得到了一个格式为 {"alaska":2, "alabama":9,"california":6} 的字典。我不知道如何在表格视图中显示它。在教程中,他们主要讨论类似的示例及其总是数组。如果你知道一些特别的教程,你可以在这里分享它的链接
  • 您的第一个问题是字典是无序的,这就是您真正想要一个数组的原因。你需要确定你想要的表中的信息,然后遍历字典来构建相关的数组
  • UITableView 一般是基于索引的,也就是说你需要根据索引来访问字典中的数据。你可以make an array out of a dictionary,所以保罗说的。 custom cells 以后可能会有所帮助。

标签: ios json swift uitableview


【解决方案1】:

你需要

var tableDic = [String: Int]()

//

let item = OrdersSummaryFetchservice(url:////)
item.fetchOrdersSummary { (result) in
   self.tableDic = result
   self.tableView.reloadData()
}

//

在numberOfRows返回

return self.tableDic.keys.count

在cellForRowAt使用

let key = Array(self.tableDic.keys)[indexPath.row]
let currentInt = self.tableDic[key]

【讨论】:

  • 这不会给出稳定的结果。字典没有排序。生成的键数组可以按任何顺序返回。永远不要使用字典作为表视图数据源的基础。将数据放入数组中。这也是低效的,必须为每个单元一遍又一遍地重新创建相同的数组。获取数据后构建单个数组,然后将该固定数组用作表的数据模型。
  • @rmaddy 我知道它是无序的(每个键数组都会以无序的形式返回,但我放的任何地方都一样),而且操作也没有说明他关心排序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
相关资源
最近更新 更多