ios - 无法在深度嵌套的数据结构上下标错误

标签 ios arrays swift dictionary

我有一个像这样的深度嵌套的字典数组:

func markAllBooksAsUnread() {

    for (cat, catArray) in bookage.setless {
        for (gen, genArray) in catArray {
            for (foc, focArray) in genArray {
                for dict in focArray {
                    bookage.setless[cat]![gen]![foc]![dict]["read"] = "no"
                }
            }
        }
    }
}

这段代码在我看来是正确的,但产生了错误:

Cannot subscript a value of type Array<Dictionary<String, String>> with an index of type 'Dictionary<String, String>'

在 [dict] 中的 'd' 下加上胡萝卜。 bookage.setless 数组的结构是:

var setless = [String : Dictionary<String, Dictionary<String, Array<Dictionary<String, String>>>>]()

我做错了什么?

最佳答案

dict 是一个字典,你不能用它作为索引。试试这个:

for (cat, catArray) in bookage.setless {
    for (gen, genArray) in catArray {
        for (foc, focArray) in genArray {
            for i in focArray.indices {
                bookage.setless[cat]![gen]![foc]![i]["read"] = "no"
            }
        }
    }
}

关于ios - 无法在深度嵌套的数据结构上下标错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33459586/

相关文章:

ios - 循环遍历一个 json 文件并填充一个数组 Swift

ios - Swift 支持反射吗?

java - 将数组 php 转换为 java

c - 全局修改数组/结构不起作用

ios - Swift - 委托(delegate)不从其他类调用方法

arrays - swift 可编码 : Array of Dictionaries

ios - 在条码扫描仪中显示边界区域

ios - 在二维数组中搜索 tableView objC

python - 在循环中将项目添加到数组

ios - Alamofire 无法禁用缓存