2016-03-14 3 views
0

Я хочу распечатать «человека» из одного из словарей. Я уверен, что это очень просто, но я не смог найти ответ на Swift 2.0Swift - печать объекта из массива словарей

var dic = 
["person" : "Jane", 
"country" : "US"] 

var dic1 = 
["person" : "Bill", 
"country" : "UK"] 

var dic2 = 
["person" : "Jin", 
"country" : "NK"] 

var bigArray = [dic, dic1, dic2] 
var myAnswer = bigArray[1].valueForKey("person") as! String 
print(myAnswer) 

Он бросает мне ошибку «Значение типа" [String: String] не имеет ни один из членов „valueForKey“ . Что я здесь отсутствует

+0

попытайтесь отличить bigArray [1] до типа NSDictionary, а затем введите значение для ключа. –

+0

Используйте подписку на словарь Swift. Использование .valueForKey для NSDictionary. См. «Доступ к и изменение словаря» в https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html#//apple_ref/doc/uid/TP40014097-CH8-ID113 – Moritz

ответ

3

Вы должны сделать это так:?.

var myAnswer = bigArray[1]["person"]! 
+0

Thank вы, я знал, что это будет что-то простое. Но знаете ли вы, когда будете использовать .valueForKey («человек»)? –

+2

valueForKey - член NSDictionary, поэтому вам нужно сначала использовать словарь, чтобы использовать этот метод, но я не рекомендую его, потому что NSDictionary - это Objective-C type. – Firatov

+0

Для более полного различия 'valueForKey:' позволяет запрашивать многие типы NSObject для значений свойств по имени ключа. Исторически сложилось так, что 'valueForKey:' был единственным способом получить значения из NSDictionary, но со временем стандартная нотация '[key]' была добавлена ​​в объектные-C и 'valueForKey:' в основном не используется в наши дни. –

1
let dic = 
    ["person" : "Jane", 
     "country" : "US"] 

    let dic1 = 
    ["person" : "Bill", 
     "country" : "UK"] 

    let dic2 = 
    ["person" : "Jin", 
     "country" : "NK"] 

    let bigArray = [dic, dic1, dic2] 
    let myAnswer = bigArray[1]["person"] 
    print(myAnswer) 
+0

Спасибо за это. –

+1

Вы имели в виду 'print (myAnswer)'? – ColGraff

+0

@ KennethBruno yes =) – HMHero

0
if let myAnswer = (bigArray[1] as NSDictionary).valueForKey("person"){ 
    print(myAnswer) 
} 
1

Пытаться определить тип

var dic1 : NSMutableDictionary = 
["person" : "Bill", 
"country" : "UK"]