在Plist中解码嵌套字典

时间:2017-12-22 07:44:49

标签: ios swift nsdictionary plist

我在截图中有一个plist。它填满了表格及其单元格。我希望将所有词典都放在“Admin”中,例如“FirstTable”“SecondTable”等。下面的代码给出了

  

“类型”(键:任意,值:任何)'不符合协议'序列'

错误。

if let path = Bundle.main.path(forResource: "Admin", ofType: "plist") {
           myDict = NSDictionary(contentsOfFile: path)
           let admin = myDict?.object(forKey: "Admin") as! NSDictionary
           for dicts in admin{
               for sub_dict in dicts{
                   print(sub_dict)
               }
           }
}

Plist Screenshot

1 个答案:

答案 0 :(得分:2)

您不能以迭代数组的方式迭代字典。 你将不得不改变

for dicts in admin {

for (key, value) in admin {

作为字典条目由键和值组成,而不仅仅是单个对象,例如一个数组。

如果要遍历所有词典,您将“需要”递归。如果你不知道那是什么,它基本上是一种自称(但不是无限)的方法。 你可以这样做,例如:

func iterateThroughDictionary(dict: Dictionary<String, Any>) {
    for (key, value) in dict {
        if let subDict = value as? Dictionary<String, Any> {
            iterateThroughDictionary(dict: subDict)
        } else {
            print(value);
        }
    }
}

然后你只需要用root-dictionary调用它。