2016-07-14 3 views
0

У меня есть строка, dataString, содержащие следующую JSon информации:Как получить доступ к элементам JSON массива в Swift 2

{"products":[ 
{"DBID":"2954","ScanID":"143","Name":"Cables","Count": 7,"Info":""}, 
{"DBID":"5551","ScanID":"129","Name":"Batteries","Count": 24,"Info":""}, 
{"DBID":"7143","ScanID":"003","Name":"Media","Count": 49,"Info":""} 
]} 

Как я могу

  1. итерации по этим данным с помощью Swift 2 в вычислить общее количество полей «Count» для всех продуктов?
  2. Доступ к элементам данных определенного «продукта». Например, если я знаю, что мне нужно получить «Имя» продукта в слоте 1, как я могу получить к нему доступ напрямую?
+0

Возможный дубликат [Swift JSON с анализом] (http://stackoverflow.com/questions/26551029/parsing-json-swift) –

+0

Я бы предложил сделать вашу жизнь проще и используя https://github.com/SwiftyJSON/SwiftyJSON & https://github.com/SwiftyJSON/Alamofire-SwiftyJSON – Asdrubal

ответ

0

Для получения общей суммы счета вы можете использовать sum оператора iOS. Для получения дополнительной информации об операторе по сборке проверьте это link. Вы должны изменить свой код, как этот

do { 
    //Here jsonStr in your json String 
    let data = jsonStr.dataUsingEncoding(NSUTF8StringEncoding) 
    let dic = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSDictionary 
    let proArr = dic["products"] as! NSArray 
    let sum = proArr.valueForKeyPath("@sum.Count") 
    print(sum) //Print sum of the all count 
    print(proArr[0]["name"]) //To print name of first products 
} 
catch let e as NSError { 
    print(e.localizedDescription) 
} 
+0

Когда я попробую ответить, он печатает «Необязательно» с данными массива. Таким образом, print (proArr [0] ["name"]) печатает "Необязательный (Кабели)". Я попытался развернуть, а затем распечатать, но он все равно делает то же самое. – MBU

+0

попробуйте напечатать как 'print (proArr [0] [" name "]!)' –

+0

Он по-прежнему делает то же самое. – MBU

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