ios - 在 Plist 中解码嵌套字典

标签 ios swift nsdictionary plist

我有一个 plist,如屏幕截图所示。它填满表格及其单元格。我想获取“Admin”中的所有词典,例如“FirstTable”“SecondTable”等。下面的代码给出了

"Type '(key: Any, value: Any)' doesnot conform to protocol 'Sequence'

错误。

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

最佳答案

您不能像遍历数组那样遍历字典。 你将不得不改变

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

然后你只需要用根字典调用它。

关于ios - 在 Plist 中解码嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47937661/

相关文章:

ios - 如何将通用(关联类型需要)协议(protocol)作为委托(delegate)给任何 Controller ?

c++ - const 类型 'NSString *const __strong' 对象的默认初始化?

swift - Xcode/Firebase 改进搜索功能

swift - 对 SpriteKit 节点进行分组,以及 zPosition 控制

ios - 通话中状态栏将 View 推出底部

ios - 小屏幕开发

ios - 使用 MKPinAnnotationView 仅更改信息气泡?

objective-c - NSDictionary setValue :forKey: -- getting "this class is not key value coding-compliant for the key"

objective-c - hredis 与 NSDictionary 的使用

objective-c - 什么是 NSCFDictionary?