2015-02-24 3 views

ответ

0

Вы лучше получить представление о том, как вы можете иметь дело с словарях в Swift

let employees = json["employees"]! as [[String : AnyObject]] 

Следующий шаг заключается в цикле массив сотрудников и печати ПгвЬЫате и LastName.

Имейте в виду, что мы зацикливаем массив словарей. Это означает, что для того, чтобы получить значение строки из ПгвЬЫате и LastName нам нужно распаковывать УСТРОЙСТВА первым:

for employee in employees { 
    let firstName = employee["firstName"]! as String 
    let lastName = employee["lastName"]! as String 

    println("employee: \(firstName) \(lastName)") 
} 

сборки, запуск и вы должны увидеть:

employee: John Doe 
employee: Anna Smith 
employee: Peter Jones 
+0

Спасибо! Это прекрасный ответ на этот вопрос ... –

0

Пожалуйста, проверьте этот код. Это может помочь вам в том, что вам нужно.

var dictData = Dictionary <String,Any>() 
var arrDictData = Array<Any>() 

// Will store value for key in dictionary. 
func storeData (strName: String , strAge: String) { 
     dictData["name"]=strName 
     dictData["age"]=strAge 
     println("dictData: \(dictData)") 
     storeInArray(dictData) 
    } 

    // Will store value of dictionary in array. 
    func storeInArray (dict : Any) { 
     arrDictData.append(dict) 
     println("arrDictData: \(arrDictData)") 
    } 

    // Will return count of array. 
    func resultArray() -> Int { 
     println(arrDictData.count) 
     return arrDictData.count 
    } 

    // This function will return value in label. 
    func arrDictResult(dictKey: String, rowIndex: Int) -> String { 
     var dataTemp = arrDictData[rowIndex] as Dictionary <String,Any> 
     var val = dataTemp[dictKey] as String 
     return val 
    } 
6

Вы можете попробовать это

let array: AnyObject? = dic["Table"] 
2

Вы можете попробовать это

var dict=NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: NSErrorPointer.null()) as NSDictionary 

var temp=dict["contactname"] as String 

var tem=dict.valueForKey("contactname") as String 
+0

Добро пожаловать в StackOverflow. Пожалуйста, добавьте некоторое объяснение в свой код, показывая, как он решает проблему и почему. Это поможет другим, кто увидит ваш ответ в будущем, и сделает ваш ответ более ценным для StackOverflow. –

3

Простой, например.

(dicDetail.valueForKey("name") as! String) 
+0

Но теперь это не сработает. Я думаю, что swift3 изменит синтаксис для получения ключевого значения из словаря. – hilaj

4

Там больше нет valueForKey: в Swift, но есть способ использовать map для достижения такой же, если не такие же, результат.

Если объекты в коллекции словарей:

let array = dic.map { $0["table"] as? String } 

Если объекты в коллекции являются объекты:

let array = dic.map{ $0.table } 

Если вы используете типы коллекций Objective-C, как NSDictionary в вашем примере , то, как говорили другие, вы все равно можете использовать valueForKey:.

let array = dic.valueForKey("table") 
Смежные вопросы