为什么在循环遍历字典数组时会出现此错误?
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
}
forin
方法中的meh()
循环会产生以下错误:
'字典'不能转换为'([[String:UINib]],[[String:UINib]])'
答案 0 :(得分:1)
我们无法遍历字典数组的键和值。我们可以遍历字典。对于每个字典,我们可以遍历其键和值:
let product = buildCells()
for dict in product {
for (identifier, nib) in dict {
tableview.registerNib(nib, forCellReuseIdentifier: identifier)
}
}
但我认为问题实际上更可能是buildCells()
中的废话。你为什么要返回一系列词典?你打算有重复的钥匙吗?我不认为tableview会让你为同一个标识符注册多个笔尖。
为什么我们不回复字典?
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)
}