2016-03-21 10 views
0

JSON verisinden oluşturulan NSDictionary ile bir geri arama yürüten bir URL'den JSON verilerini okuyacak genel bir sınıf oluşturmaya çalışıyorum. Bu işlevi yapmak için statik bir sınıf oluşturdum, ancak dataTaskWithRequest'ten sonra çalışmadığı görülüyor.NSURLSession.dataTaskWithRequest çalışmıyor

[My Kodu]

import Foundation 

class LoadJsonFromNetwork { 
    static func LoadJsonFromNetwork(url:NSURL, completion:((NSDictionary) ->())) { 
     print("Creating request") 
     let urlRequest = NSMutableURLRequest(URL: url, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0) 
     print("Creating session") 
     let session = NSURLSession.sharedSession() 
     print("Send request") 
     session.dataTaskWithRequest(urlRequest) { 
      (data: NSData?, response: NSURLResponse?, error: NSError?) in 
      print("Checking error and nil data") 
      if (error == nil && data != nil) { 
       print("Request json dictionary from nsdata") 
       if let result = self.NSDataToJson(data!) { 
        print("Dispatching to main queue") 
        dispatch_async(dispatch_get_main_queue()) { 
         print("Calling callback") 
         completion(result) 
        } 
       } 
      } else { 
       print(error!.description) 
      } 
     } 
    } 

    private static func NSDataToJson(data:NSData) -> NSDictionary? { 
     do { 
      print("Serializing JSON") 
      let json: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) 
      print("Cretaing NSDictionary") 
      let result = json as? NSDictionary 
      print("Returning result") 
      return result 
     } catch { 
      return nil 
     } 
    } 
} 

[Konsolu My Sonucu]

Creating request 
Creating session 
Send request 

cevap

2

Sen resume() görev unutmak var. Lütfen aşağıdaki düzenlenmiş kodunuzu bulun!

static func LoadJsonFromNetwork(url:NSURL, completion:((NSDictionary) ->())) { 
    print("Creating request") 
    let urlRequest = NSMutableURLRequest(URL: url, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0) 
    print("Creating session") 
    let session = NSURLSession.sharedSession() 
    print("Send request") 
    let task = session.dataTaskWithRequest(urlRequest) { 
     (data: NSData?, response: NSURLResponse?, error: NSError?) in 
     print("Checking error and nil data") 
     if (error == nil && data != nil) { 
      print("Request json dictionary from nsdata") 
      if let result = self.NSDataToJson(data!) { 
       print("Dispatching to main queue") 
       dispatch_async(dispatch_get_main_queue()) { 
        print("Calling callback") 
        completion(result) 
       } 
      } 
     } else { 
      print(error!.description) 
     } 
    } 
    task.resume() //you need to call this 
} 
+1

Saçma sapanlığım. –

+0

Merhaba, kodum yazdırmak için çalışmaz ("Hata ve sıfır verileri denetleme") (hata == nil && data! = Nil) { print ("nsdata'dan json sözlüğünü isteyin") sonucu sonucu = kendiliğinden. NSDataToJson (veri!) { baskı ("ana sıraya Sevk") dispatch_async (dispatch_get_main_queue()) { baskı ("geri arama arama") tamamlama (sonuç) } } } else { baskı (hata! .description) } // Lütfen bunun neden olduğunu bana bildirin. Teşekkürler – AmyNguyen

+0

@AmyNguyen 'NSURLSession' kullanıyor musunuz? –