[英]Accessing deeply nested dictionary and array values in Swift
我有一组超级嵌套的字典和数组
var lines = [“ set0”:[“ lines”:[“ Line one”,“ Line two”],“ pickone”:[“ set1”:“ Apples”,“ set2”:“ Oranges”]],“ set1 “:[” lines“:[”第一行“,”第二行“],”皮卡“:[” set3“:”香蕉“,” set4“:”葡萄柚“]]
我有两个问题:
有什么办法可以使这些嵌套词典的结构更易读
我如何访问嵌套数组的值
例如,在操场上,我正在尝试以下代码:
lines["set0"]!["lines"]
但我什么都没有得到。
关于可读性,请尝试:
var lines = [
"set0":[
"lines":[
"Line one",
"Line two"
],
"pickone":[
"set1":"Apples",
"set2":"Oranges"
]
],
"set1":[
"lines":[
"Line one",
"Line two"
],
"pickone":[
"set3":"Bananas",
"set4":"Grapefruits"
]
]
]
至于您的行:
lines["set0"]!["lines"]
我可以确认它正在运行。 也许您应该给操场一些时间来显示结果。 或者,也许您忘记了:
import Foundation
关于您的问题2:在代码稍作更改之后,您可以遍历它的所有分支。
var lines:AnyObject = ["set0":["lines":["Line one","Line two"],"pickone": ["set1":"Apples","set2":"Oranges"]],"set1":["lines":["Line one","Line two"],"pickone":["set3":"Bananas","set4":"Grapefruits"]]]
NSLog("original object:\(lines)")
NSLog("all keys array:\(lines.allKeys)")
if(lines.isKindOfClass(NSDictionary)){
for key in lines.allKeys{
var innerDictionary:AnyObject! = lines.valueForKey(key as! NSString as String)
//NSLog("inner dictionary:\(innerDictionary)")
NSLog("depth2 keys array:\(innerDictionary.allKeys)")
if(innerDictionary.isKindOfClass(NSDictionary)){
for innerKey in innerDictionary.allKeys{
var innerValue:AnyObject! = innerDictionary.valueForKey(innerKey as! NSString as String)
if(innerValue.isKindOfClass(NSDictionary)){
NSLog("Depth3 keys array:\(innerValue.allKeys)")
var mostInnerDicionary:AnyObject! = innerDictionary.valueForKey(innerKey as! NSString as String)
NSLog("most inner Dictionary:\(mostInnerDicionary)")
for mostInnerKey in mostInnerDicionary.allKeys{
var mostInnerValue:AnyObject! = mostInnerDicionary.valueForKey(mostInnerKey as! NSString as String)
NSLog("most inner Value:\(mostInnerValue)")
}
}else{
NSLog("innerValue:\(innerValue)")
}
}
}
}
}
输出:运行并检查控制台日志中的输出
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.