Swift循环遍历字典数组

时间:2015-03-16 22:57:35

标签: 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() -> [[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]])'

1 个答案:

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