Swift从字典中获取值

Swift从字典中获取值,swift,Swift,请帮助我从响应中获取值 { "BU": { "name": "Bulawayo", "names": "Bulawayo" }, "HA": { "name": "Harare", "names": "Harare" } } 我想要密钥名的值。我的代码在下面 let response = responseObject as! Dictionary<String,AnyObject> let stateNames = response.

请帮助我从响应中获取值

{
  "BU": {
    "name": "Bulawayo",
    "names": "Bulawayo"
  },
  "HA": {
    "name": "Harare",
    "names": "Harare"
  }
}
我想要密钥名的值。我的代码在下面

let response = responseObject as! Dictionary<String,AnyObject>
let stateNames = response.values as! Dictionary<String,AnyObject>
让response=responseObject为!字典
让stateNames=response.values为!字典
获取此问题:

cannot cast from lazyMapCollection<Dictionary<String,Anyobject>,String> in swift
无法在swift中从lazyMapCollection强制转换

您可以将“BU”的值作为
响应。valueForKey(“BU”)。valueForKey(“name”)
它将为您提供值“Bulawayo”。

您可以将“BU”的值作为
响应。valueForKey(“BU”)。valueForKey(“name”)
它将为您提供值“Bulawayo”。

如果您想要所有的名称,请这样尝试

var name = [String]()
let keyArray = responseDic.allKeys as! [String]
for key in keyArray {
    let nameDic = responseDic.valueForKey(key) as! Dictionary<String,AnyObject>
    name.append(nameDic.valueForKey("name") as! String)
}
var name=[String]()
让keyArray=responseDic.allKeys为![字符串]
用于keyArray中的键{
让nameDic=responseDic.valueForKey(key)作为字典
name.append(nameDic.valueForKey(“name”)作为!字符串)
}

如果你想要所有的名字,那么试试这个

var name = [String]()
let keyArray = responseDic.allKeys as! [String]
for key in keyArray {
    let nameDic = responseDic.valueForKey(key) as! Dictionary<String,AnyObject>
    name.append(nameDic.valueForKey("name") as! String)
}
var name=[String]()
让keyArray=responseDic.allKeys为![字符串]
用于keyArray中的键{
让nameDic=responseDic.valueForKey(key)作为字典
name.append(nameDic.valueForKey(“name”)作为!字符串)
}

您可以执行以下操作来访问这些值:

if let responseBU = response["BU"] {
   let name = responseBU["name"]
   let names = responseBU["names"] 
}

您可以执行以下操作来访问这些值:

if let responseBU = response["BU"] {
   let name = responseBU["name"]
   let names = responseBU["names"] 
}

@Bhuatik响应来自服务器,因此我无法指定密钥name@ThripthiHaridas请检查我的答案。@Tripthi Haridas您可以尝试respose.result.value.valueForKey(“BU”).valueForKey(“名称”)如果您使用的是Alamofire@Bhuatik,则响应来自服务器,因此我无法指定密钥name@ThripthiHaridas请检查我的答案。@Tripthi Haridas您可以尝试respose.result.value.valueForKey(“BU”).valueForKey(“名称”)如果您正在使用Alamofire.cast从lazyMapcollection转换为不相关类型的字符串,您是否创建了类似于我为
name
创建的字符串数组。从lazyMapcollection转换为不相关类型的字符串您是否创建了类似于我为
name
创建的字符串数组。无法使用name BU。值与服务器不同您的意思是说键本质上是动态的吗?您应该使用服务器发送密钥而不是“BU”@thripthiharidas如果您真的不知道密钥是什么,那么您可以像这样获取所有密钥:let allKeys=Array(response.keys)@不能使用ThripthiHaridasname BU。值与服务器不同您的意思是说键本质上是动态的吗?您应该使用服务器发送密钥而不是“BU”@thripthiharidas如果您真的不知道密钥是什么,那么您可以像这样获取所有密钥:let allKeys=Array(response.keys)@蓟马