【问题标题】:Use Dictionary for Table Data Swift将字典用于表数据 Swift
【发布时间】:2018-02-02 02:59:13
【问题描述】:

我有一本根据用户选择的选项而变化的字典。例如:

[“Item1”:7,“Item2”:4,“Item3”:4,“Item4”:7,“Item5”:6]

每个项目旁边的数字是每个项目的计数。我想知道如何将这个字典转换成表格?那么左列是项目,右列是项目计数?

最好的方法是什么?

数据原来是一个数组,格式为:["Item1", "Item2", "Item3", "Item1", "Item1", "Item2"]

但是我用过

var counts: [String: Int] = [:] , myArray.forEach { counts[$0, default: 0] += 1 }

计算数组中的每一项

【问题讨论】:

  • 什么数组?到目前为止,您已经发布了一本字典。
  • 对不起,改成字典了。
  • 表格使用什么顺序?字典是无序的。
  • 嗯,我需要考虑一下。数据原本是一个数组,格式为:["Item1", "Item2", "Item3", "Item1", "Item1", "Item2"。但我使用 var counts: [String: Int] = [:] , myArray.forEach { counts[$0, default: 0] += 1 } 来计算数组中的每个项目,然后将其放入字典中

标签: swift uitableview dictionary swift4


【解决方案1】:

您可以将字典转换成这样的排序数组:

let array = data.map { $0 }.sorted { $0.key < $1.key }

这将产生一个 (key: String, value: Int) 数组,按键的字母顺序排序。

现在,在您的 tableView 委托方法中,您可以返回 array.count 以获取数字,如果您想配置您的单元格,您可以执行以下操作:

let element = array[indexPath.row]
cell.textLabel.text = element.key
cell.detailLabel.text = "\(element.value)"

【讨论】:

    【解决方案2】:

    因此,对于 tableview 数据源,您需要一个数组。

    var dic = ["Item1": 7, "Item2": 4, "Item3": 4, "Item4": 7, "Item5": 6]
    var tableInfo = [(String, Int)]()
    
    for (k, v) in dic {
        let temp = (k, v)
        tableInfo.append(temp)
    }
    

    根据 OP 的 cmets 进行了修订。

    现在你有一个适合在你的 tableview 委托中排序和使用的元组数组。

    【讨论】:

    • 我想在包含数据的视图控制器中显示一个表格视图,而不仅仅是将其打印到控制台
    • 您可以添加两个标签,一个左对齐,一个右对齐,并显示左侧标签中的键和右侧标签中的值。请注意,UITableView 不支持多列,因此这只是一种解决方法。
    猜你喜欢
    • 2016-06-11
    • 2017-02-24
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2018-01-08
    相关资源
    最近更新 更多