【问题标题】:Add items from a String:Int dictionary to UITableView on iOS using Swift使用 Swift 在 iOS 上将 String:Int 字典中的项目添加到 UITableView
【发布时间】:2017-10-23 06:23:36
【问题描述】:

在我用 Swift 编写的 iOS 应用程序中,我有一个 UITableView,每一行都有一个 UILabel。除此之外,我还有一个[String:Int] 类型的字典。

我希望UITableView 行中的每个UILabel 都包含字典中的字符串值。每行将与Int 值所代表的次数一样多。

例如,假设我有这本字典:

var dict: [String:Int] = ["apple": 2, "Banana": 3, "Orange": 7]

所以在UITableView 中,我需要有2 行带有Apple 标签,3 行带有Banana 标签,7 行带有Orange 标签。

如何在tableView(cellForRowAt:) 方法中实现这一点?

【问题讨论】:

  • Brute Force 方法可以是: 1. 取另一个数组 2. 将与它的值对应的键附加在右侧。现在您只需要在任何 Tableview 数据源和委托方法中使用这个数组。
  • 为什么不使用 numberOfRowsInSections?

标签: ios swift uitableview dictionary tableviewcell


【解决方案1】:

首先,您需要一个数组作为数据源,以便为委托方法 numberOfRowscellForRow 返回正确的值。

要将字典转换为合适的数组,请使用类似这样的方法

let dict = ["apple": 2, "Banana": 3, "Orange": 7]

var fruit = [String]()

for key in dict.keys.sorted(by: {$0.lowercased() < $1.lowercased() }) {
    let value = dict[key]!
    for _ in 0..<value {
        fruit.append(key)
    }
} // result: ["apple", "apple", "Banana", "Banana", "Banana", "Orange", "Orange", "Orange", "Orange", "Orange", "Orange", "Orange"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2015-02-21
    • 2013-02-06
    相关资源
    最近更新 更多