Loops 通过字典数组快速循环
为什么在遍历一系列字典时会出现这个错误Loops 通过字典数组快速循环,loops,swift,dictionary,Loops,Swift,Dictionary,为什么在遍历一系列字典时会出现这个错误 import UIKit let tableView = UITableView() func meh() { let product = buildCells() for (identifier, nib) in product { tableView.registerNib(nib, forCellReuseIdentifier: identifier) } } func buildCells() ->
import UIKit
let tableView = UITableView()
func meh() {
let product = buildCells()
for (identifier, nib) in product {
tableView.registerNib(nib, forCellReuseIdentifier: identifier)
}
}
func buildCells() -> [[String: UINib]] {
var collector = [[String: UINib]]()
let identifier = "identifier"
let nib = UINib(nibName: "TableViewCell", bundle: nil)
let asdf = [identifier: nib];
collector.append(asdf)
return collector
}
meh()
方法中的forin
循环产生以下错误:
“Dictionary”不能转换为“([[String:UINib]],[[String:UINib]]”
我们不能遍历字典数组中的键和值。不过我们可以反复阅读字典。对于每个字典,我们可以迭代其键和值:
let product = buildCells()
for dict in product {
for (identifier, nib) in dict {
tableview.registerNib(nib, forCellReuseIdentifier: identifier)
}
}
但我认为问题实际上更像是buildCells()
中的胡说八道。为什么要返回字典数组?你打算有重复的钥匙吗?我认为tableview不允许为同一标识符注册多个NIB
我们为什么不还本字典呢
func buildCells() -> [String: UINib] {
var dict = [String: UINib]()
dict["identifier"] = UINib(nibName: "TableViewCell", bundle: nil)
// rinse & repeat for all of your other ID/nib combos with no duplicate IDs
return dict
}
现在,我们可以迭代字典中的键/值对,而无需外部循环:
for (identifier, nib) in dict {
tableview.registerNib(nib, forCellReuseIdentifier: identifier)
}
虽然屏幕截图很好,但请在问题中以纯文本形式发布源代码和错误消息,以便与谷歌合作(并向您建议在编写问题时可能重复的问题)。另外,它实际上是可复制和可复制的,等等……因为我昨晚很晚才开始编码,这种方法似乎在全世界都有意义。