2015-10-30 1 views
0

Dans mon projet, j'ai besoin d'aller chercher des données JSON sur le web. Dans le même temps, je vais le convertir en String et le stocker sur mes données de base.Swift: Récupère les données JSON et met à jour localement

En supposant que je récupère ces données JSON à partir du Web.

enter image description here

Je ne nécessitent qu'une aide pour obtenir les données de JSON et convertir en String Array. Désolé je suis très nouveau à Swift2, et je sais seulement comment coder jusqu'à ici.

var url: NSURL = NSURL(string: jsonUrl)! 
var request: NSURLRequest = NSURLRequest(URL: url) 
let queue:NSOperationQueue = NSOperationQueue() 

Répondre

0

Ici, vous allez, testé sur ma machine avec un service Web local

let session = NSURLSession.sharedSession() 
     let request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:8080/iOSServer/ios/helloworld/getJSONArray")!) 
     request.HTTPMethod = "GET" // change it to post if you want 

     let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in 

      if let error = error { 
       print(error) 
      } 
      if let data = data{ 
       do{ 
        let resultJSON = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) 
        let resultArray = resultJSON as? NSArray 
        for jsonObjectString in resultArray!{ 
         let platform = jsonObjectString["platform"]! 
         let favorite = jsonObjectString["favorite"]! 
         let language = jsonObjectString["language"]! 
         print("platform = \(platform!)") 
         print("favorite = \(favorite!)") 
         print("language = \(language!)") 
        } 

       }catch _{ 
        print("Received not-well-formatted JSON") 
       } 

      } 
      if let response = response { 
       let httpResponse = response as! NSHTTPURLResponse 
       print("response code = \(httpResponse.statusCode)") 
      } 



     }) 
     task.resume() 
    } 

comme vous le voyez, dans la boucle for, je suis l'impression des valeurs qui vient former le serveur, vous pouvez faire ce que vous voulez avec eux.

je supposé les touches JSON sont: platform, favorite et language Vous pouvez les changer. (s'il vous plaît prendre soin de la capitale et des lettres minuscules)

+0

MERCI BEAUCOUP !!!! –

+0

Salut, pendant que je travaille encore sur le même projet, je remarque que pendant le débogage, il quitte le programme après 'let task = session.dataTaskWithRequest (request, completionHandler: {(données, réponse, erreur) in, où il s'exécute 'task.resume()' sans passer par les instructions 'If' En raison de ce problème, je n'ai pas pu extraire et afficher sur mon UITableView –

+0

@JoeLeong s'il vous plaît créer une nouvelle question, décrire le nouveau problème et envoyez-moi le lien –

0
let task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: "url")!, completionHandler: { (data, response, error) -> Void in 
    if error != nil { 
     //do something with error 
     return 
    } 

    do { 
     if let data = data, jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as? [[String:AnyObject]] { 

      for object in jsonData { 
       var object = Object() 
       if let platform = object["platform"] as? String { 
        object.platform = platform 
       } 
      } 
     } 
    } catch { 
     //Handle error 
    } 
}) 
task.resume()