2015-11-28 3 views
1

Я стараюсь, чтобы получить начать с swiftyJSON и синтаксический анализ информации в Swift поэтому я начать с этим API, чтобы понять:swiftyJSON двигаться в массив

http://api.androidhive.info/contacts/

Так вот мой код

import Fuzi 
import UIKit 
import Alamofire 
import SwiftyJSON 


class ViewController: UIViewController { 

    var arrRes = [[String:AnyObject]]() //Array of dictionary 

    var JSON_TestURL = "http://api.androidhive.info/contacts/" 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     //get JSON 
     Alamofire.request(.GET, JSON_TestURL).responseJSON { (responseData) -> Void in 
      let swiftyJsonVar = JSON(responseData.result.value!) 
      //print(swiftyJsonVar) 
      //get JSONarray Name and write it into new Array 
      if let resData = swiftyJsonVar["contacts"].arrayObject { 
       self.arrRes = resData as! [[String:AnyObject]] 
      } 

      //count array and give "tag" 
      print(self.arrRes.count) 



      for var index = 0; index < self.arrRes.count; ++index { 
       var dict = self.arrRes[index] 
       let x = dict["name"] as? String 
       print(x) 
       print("") 
      } 
     } 

    } 

получение имени, идентификатора и т. Д. Не проблема, но когда я пытаюсь получить номер телефона, я не могу найти способ.

ответ

0
for var index = 0; index < self.arrRes.count; ++index { 
       var dict = self.arrRes[index] 
       let x = dict["phone"]!["mobile"] as? String 
       print(x) 
       //print("") 
      } 
0

При использовании SwiftyJSON вам не нужно бросать объекты, подобные вашим NSJSONSerialization. Вам не нужно использовать этот способ циклирования, когда простой вызов map сделает трюк.

Например, заменить все это:

if let resData = swiftyJsonVar["contacts"].arrayObject { 
    self.arrRes = resData as! [[String:AnyObject]] 
} 

print(self.arrRes.count) 

for var index = 0; index < self.arrRes.count; ++index { 
    var dict = self.arrRes[index] 
    let x = dict["phone"]!["mobile"] as? String 
    print(x) 
} 

с этим:

let contacts = swiftyJsonVar["contacts"].arrayValue 
let allMobilePhones = contacts.map { $0["phone"]["mobile"].stringValue } 
print(allMobilePhones) 
Смежные вопросы