2015-09-03 2 views
1
import Foundation 

class NetworkOperation { 

    lazy var config: NSURLSessionConfiguration =  NSURLSessionConfiguration.defaultSessionConfiguration() 
    lazy var session: NSURLSession = NSURLSession(configuration: self.config) 
    let queryURL: NSURL 

    typealias JSONDictionaryCompletion = ([String: AnyObject]? -> Void) 

    init(url: NSURL) { 
     self.queryURL = url 
    } 

    func downloadJSONFromURL(completion: JSONDictionaryCompletion) { 

     let request = NSURLRequest(URL: queryURL) 
     let dataTask = session.dataTaskWithRequest(request) { 
      (let data, let response, let error) in 

// 1. Vérifiez réponse HTTP pour la requête GET réussieargument supplémentaire 'erreur' dans l'appel - Impossible de construire mon projet Xcode

  if let httpResponse = response as? NSHTTPURLResponse { 
       switch httpResponse.statusCode { 
       case 200: 

// 2. Créer un objet JSON avec des données

    let jsonDictionary = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) 
        completion(jsonDictionary) 
       default: 
        print("GET request not successful. HTTP status code: \(httpResponse.statusCode)") 
       } 
      } else { 
       print("Error: Not a valid HTTP response") 
      } 
     } 

     dataTask.resume() 
    } 
} 

dans le « Créer un objet JSON avec des données » étape, je continue à recevoir le « argument supplémentaire « erreur » dans l'appel ». Qu'est-ce qui se passe? Je suis incapable de trouver de la documentation pour m'aider dans ce domaine.

Répondre

0

// 1. Vérifiez réponse HTTP pour requête GET réussie

  if let httpResponse = response as? NSHTTPURLResponse { 
       switch httpResponse.statusCode { 
       case 200: 

// 2. Créer un objet JSON avec des données

    let jsonDictionary = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) as? [String: AnyObject] 
        completion(jsonDictionary) 
       default: 
        println("GET request not successful. HTTP status code: \(httpResponse.statusCode)") 
       } 
      } else { 
       println("Error: Not a valid HTTP response") 
      } 
     } 

     dataTask.resume() 
    } 
} 

Enfin figured it out ! Merci pour votre contribution tout le monde!

0

au sommet de l'étape 2: création JSON ....

ajouter cette ligne:

var err: NSError? 
+0

Cela n'a pas fonctionné. Merci pour votre contribution, il est apprécié. – SleepyViking

1

Vous pouvez le faire de cette façon.

do{ 
     var jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers) 
     //completion(jsonDictionary) 
    }catch{ 
     // report error 
    } 
+0

Je n'ai pas encore utilisé 'do'/'catch'. Cela me rappelle le 'try'/'except' de Python. Je ne sais pas comment l'exécuter correctement dans Swift, pourriez-vous me diriger vers plus de documentation ou mieux l'expliquer? Je vous remercie! – SleepyViking

+0

En outre, est-ce que je supprime l'instruction 'if let' en entier et annonce le 'do'/'catch'? Ou est-ce que je supprime tout sous '// 2.'? Je vous remercie! – SleepyViking

+0

tout de "cas 200:" mis en essai bloc – Jamil