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)
}

虽然屏幕截图很好,但请在问题中以纯文本形式发布源代码和错误消息,以便与谷歌合作(并向您建议在编写问题时可能重复的问题)。另外,它实际上是可复制和可复制的,等等……因为我昨晚很晚才开始编码,这种方法似乎在全世界都有意义。