我有一个简单的函数,它可以根据最后一个函数编译另外两个字典。
编译器没有显示错误,但执行后resultDict为空。在调试中,所有变量countertype.1tempDict都有正确的非零值。

func compileBaseFromCSV(original: [Int:[String]], headers: [Int:String]) -> [Int:[String:[String]]] {
    var resultDict = [Int:[String:[String]]]()
    var tempDict = [String]()
    var counter = 0
    for type in headers {
        for object in original {
            tempDict.append(object.1[type.0])
        }
        resultDict[counter]?[type.1] = tempDict
        counter += 1
    }
    print(resultDict)
    return resultDict
}

这个密码怎么了?谢谢!

最佳答案

首先,您从未设置过resultDict[counter],您需要如下内容:

if resultDict[counter] == nil {
  resultDict[counter] = [:]
}

在将价值观融入其中之前。
但代码中似乎还有一些问题(例如,tempDict是否应该重置?)。使用调试器单步执行代码,查看值并检查它们如何更改(以及是否符合您的要求)。

关于swift - 在Swift中填充字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38457098/

10-09 12:57