2016-07-22 5 views
0

, пожалуйста, помогите мне, чтобы получить значение от ответаSwift значения Достаньте из словаря

{ 
    "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> 

получать этот вопрос:

cannot cast from lazyMapCollection<Dictionary<String,Anyobject>,String> in swift 

ответ

3

вы можете получить значение «Б», как response.valueForKey("BU").valueForKey("name") это даст вам значение «Булавайо».

+0

спасибо за ур ответ .. @Bhuatik –

+0

@Bhuatik ответ от сервера, поэтому я не могу указать имя ключа –

+0

@ThripthiHaridas Пожалуйста, проверьте мой ответ. –

-1

После получения ответа в формате NSData вы можете просто сделать следующее, чтобы получить данные,

if let json = try? NSJSONSerialization.JSONObjectWithData(nsdata, options: .MutableContainers) as! NSDictionary {   
    if let some = json["BU"][0]["name"] { 
     print(some) // prints -- Bulawayo 
    } 
} 

С помощью subscipt мы можем получить данные.

1

Если вы хотите, чтобы все имя затем попытаться как этот

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) 
} 
+0

это не работает –

+0

Какая ошибка вы получаете –

+0

Проверьте также мое редактирование. –

0

Вы можете сделать следующее для доступа к значениям:

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

имя BU не может быть использован. значения отличаются от сервера –

+0

Вы хотите сказать, что клавиши динамичны по своей природе? Вы должны использовать ключи для отправки сервера вместо «BU» @ThripthiHaridas – Sreehari

+0

Если вы действительно не знаете, какие ключи, тогда вы можете получить все такие ключи: let allKeys = Array (response.keys). @ThripthiHaridas – Sreehari

Смежные вопросы