各位大家好,这是我的第一篇文章。
我试图在TableView
中显示动态数据:我有Dictionary
这样的数据var dizionarioComuni : Dictionary<Character, Array<ComuneModel>> = [:]
对象ComuneModel是一个自定义模型whit数据,如nomeComune,numAbitanti等
在TableView
我编写了这段代码以获取部分的编号并且它可以工作
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
//tot valori nel dictionary
dizionarioComuni.count
}
字典的键是Charachters,因为我想使用这些键作为节的标题。
问题是:如何在表格视图的方法中获得numberOfRowsInSection
?方法的签名是这个
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
anf取整数但我的钥匙是charachters。我尝试使用此代码访问字典的所有键
var keys = dizionarioComuni.keys
我可以迭代密钥,但是如何从特定索引(部分:Int)的对象列表(ComuniModel)中的特定密钥访问,该索引是方法的参数?
我搜索类似的问题,但答案并未谈及此案例。 非常感谢
答案 0 :(得分:1)
Swift词典是无序的,因此您需要维护一个单独的排序键列表,并使用它来访问您的数据。
var sortedKeys = dizionarioComuni.keys.sort()
然后numberOfRowsInSection
成为:
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dizionarioComuni[sortedKeys[section]]?.count ?? 0
}
注意:只要您的密钥列表发生变化,您就需要重新加载表格中的数据。
class MyTableViewController: UITableViewController {
var sortedKeys = [Character]() {
didSet {
if oldValue != sortedKeys {
// reload tableView
tableView.reloadData()
}
}
}
var dizionarioComuni = [Character: [ComuneModel]]() {
didSet {
sortedKeys = dizionarioComuni.keys.sort()
}
}
}