在 Plist 中解码嵌套字典
Decode Nested Dictionaries in 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)
}
}
}
不能像遍历数组那样遍历字典。
你将不得不改变
for dicts in admin {
到
for (key, value) in admin {
因为字典条目由一个键和一个值组成,而不仅仅是一个对象,例如一个数组。
如果您想遍历所有词典,您将 "need" 递归。如果你不知道那是什么,它基本上是一个调用自身的方法(但不是无限)。
例如,您可以这样做:
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);
}
}
}
然后你只需要用根字典调用它。
我有一个 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)
}
}
}
不能像遍历数组那样遍历字典。 你将不得不改变
for dicts in admin {
到
for (key, value) in admin {
因为字典条目由一个键和一个值组成,而不仅仅是一个对象,例如一个数组。
如果您想遍历所有词典,您将 "need" 递归。如果你不知道那是什么,它基本上是一个调用自身的方法(但不是无限)。 例如,您可以这样做:
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);
}
}
}
然后你只需要用根字典调用它。