在我的Swift编写的iOS应用程序中,我有一个UITableView
,每行有一个UILabel
。除此之外,我还有一个[String:Int]
类型的词典。
我希望UILabel
行中的每个UITableView
都包含字典中的String值。每行的次数与Int
值所代表的次数相同。
例如,假设我有这本词典:
var dict: [String:Int] = ["apple": 2, "Banana": 3, "Orange": 7]
因此在UITableView
中,我需要有2行标有Apple
标签,其中3行标有Banana
标签,7行标有Orange
标签它们。
如何在tableView(cellForRowAt:)
方法中实现这一目标?
答案 0 :(得分:2)
首先,您需要一个数组作为数据源,以便为委托方法numberOfRows
和cellForRow
返回正确的值。
要将字典转换为合适的数组,请使用类似
的内容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"]