Ios 从另一个人的价值观创建新的Dict
我有这样的JSON:Ios 从另一个人的价值观创建新的Dict,ios,json,swift,parsing,Ios,Json,Swift,Parsing,我有这样的JSON: { "SKzSjdBuOpO49wkPVaxtmLQoR0O2": { location: "-LB1fn5GQKTaIc-fGNPS" }, "s0ntSZP7mBQw1a8ua0E5PqazlqJ2": { location: "-LB23izD7bp2NhO0UuIo" }, "FEScjelpNSR7vuVz1ha6Z6uSfF43": { location: "-LB1JL
{
"SKzSjdBuOpO49wkPVaxtmLQoR0O2": {
location: "-LB1fn5GQKTaIc-fGNPS"
},
"s0ntSZP7mBQw1a8ua0E5PqazlqJ2": {
location: "-LB23izD7bp2NhO0UuIo"
},
"FEScjelpNSR7vuVz1ha6Z6uSfF43": {
location: "-LB1JLABuJO1NyJ-v2t_"
},
"mW7dGja6cRRB0d9uSIhg4f35PzC3": {
location: "-LB5xqUvIjEgtW_FH_nG"
},
"GCnt0VKcqjT8bl2chw43nsntaZK2": {
location: "-LB1n8ga9C0vCcZXD2Us"
}
}
在我的值[String:Any]
字典中。我想从它的值创建另一个字典来访问位置值。
您能帮我做这件事吗?尽量不要在swift中使用
字典,而对于您的情况,您可以使用[String:[String:String]]
键入数据,然后在数据中循环以获得所需的值。试试这个
let dict = ["SKzSjdBuOpO49wkPVaxtmLQoR0O2": [
"location" : "-LB1fn5GQKTaIc-fGNPS",
], "s0ntSZP7mBQw1a8ua0E5PqazlqJ2": [
"location" : "-LB23izD7bp2NhO0UuIo",
], "FEScjelpNSR7vuVz1ha6Z6uSfF43": [
"location" : "-LB1JLABuJO1NyJ-v2t_",
], "mW7dGja6cRRB0d9uSIhg4f35PzC3": [
"location" : "-LB5xqUvIjEgtW_FH_nG",
], "GCnt0VKcqjT8bl2chw43nsntaZK2": [
"location" : "-LB1n8ga9C0vCcZXD2Us",
]]
var newDict = [String: String]()
for (key, val) in dict {
newDict[key] = val["location"]
}
print(newDict)
输出:
[“SKzSjdBuOpO49wkPVaxtmLQoR0O2”:“-LB1fn5GQKTaIc fGNPS”,
“s0ntSZP7mBQw1a8ua0E5PqazlqJ2”:“-LB23izD7bp2NhO0UuIo”,
“FEScjelpNSR7vuVz1ha6Z6uSfF43”:“-LB1JLABuJO1NyJ-v2t”,
“mW7dGja6cRRB0d9uSIhg4f35PzC3”:“-LB5xqUvIjEgtW_FH_nG”,
“GCnt0VKcqjT8bl2chw43nsntaZK2”:“-LB1N8GA9C0VCCZD2US”]
编辑
对于您的案例,您可以尝试以下方法:
let dict = ["SKzSjdBuOpO49wkPVaxtmLQoR0O2": [
"location" : "-LB1fn5GQKTaIc-fGNPS",
], "s0ntSZP7mBQw1a8ua0E5PqazlqJ2": [
"location" : "-LB23izD7bp2NhO0UuIo",
], "FEScjelpNSR7vuVz1ha6Z6uSfF43": [
"location" : "-LB1JLABuJO1NyJ-v2t_",
], "mW7dGja6cRRB0d9uSIhg4f35PzC3": [
"location" : "-LB5xqUvIjEgtW_FH_nG",
], "GCnt0VKcqjT8bl2chw43nsntaZK2": [
"location" : "-LB1n8ga9C0vCcZXD2Us",
]] as Dictionary<String, Any>
var newDict = [String: String]()
for (key, val) in dict {
if let value = val as? [String: String] {
newDict[key] = value["location"]
}
}
print(newDict)
let dict=[“skzsjdbouopo49wkpvaxtmlqor0o2”:[
“位置”:“-LB1fn5GQKTaIc fGNPS”,
]“s0ntSZP7mBQw1a8ua0E5PqazlqJ2”:[
“位置”:“-LB23izD7bp2NhO0UuIo”,
],“FEScjelpNSR7vuVz1ha6Z6uSfF43”:[
“位置”:“-LB1JLABuJO1NyJ-v2t_2;”,
]“mW7dGja6cRRB0d9uSIhg4f35PzC3”:[
“位置”:“-LB5xqUvIjEgtW_FH_nG”,
],“GCnt0VKcqjT8bl2chw43nsntaZK2”:[
“位置”:“-LB1n8ga9C0vCcZXD2Us”,
]]作为字典
var newDict=[String:String]()
用于dict中的(键,val){
如果let value=val as?[字符串:字符串]{
newDict[key]=值[“位置”]
}
}
打印(newDict)
如果主要目标只是访问值,并且类型固定为[String:Any]
,请按以下方式执行:
if let info = dictionary["SKzSjdBuOpO49wkPVaxtmLQoR0O2"] as? [String : String] {
let location = info["location"]
}
那么你的主要目标是访问位置值?@LukasWürzburger是的,我想获取位置值Hanks!对我来说效果很好:)问题是,我有[String:Any]这个外观来自Firebase的模型。我不能有带括号的位置:(