2016-04-06 18 views
0

Temelde, bir zaman uyumsuz ağ işlevi vardır:Swift'deki bir bloktan bilgi nasıl saklayabilirim?

func networking(callback:NSDictionary -> Void) { 


    //stuff happens here 



    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in 
     if let error = error { 
      print("ERROR: \(error)") 
      return 
     } 
     do { 
      let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) 
      //print(json) 
      callback(json as! NSDictionary) 

      if let dataDict = json["data"] as? [String:AnyObject], 
       let rememberToken = dataDict["remember_token"] as? String { 
        self.rememberToken = rememberToken 

        //print("SUCCESS: \(rememberToken)") 
        // display success label & make button to get schedules available 
      } 
     } catch { 
      print(error) 
     } 
    } 

    task.resume() 
} 

Ve tek yapabileceğim (json) verileri geri alıyorum baskı olduğunu. Gerçekten hatırlamıyorum ve bir mülkte saklıyorum. Sorun şu ki, eğer mülkiyeti çağırırsam, ana iş parçacığı ilk önce başladığından beri hiçbir şeyim yok. Buradaki depolandıktan sonra hatırlama kartına nasıl erişebilirim?

Veya başka bir yerde saklayabilir miyim?

Bunu yapmanın en iyi yolu nedir? Blocks

tercih olacaktır bloklarını kullanma

  1. Temsilci Kullanarak ve Protokoller

  2. :

+0

Hatırlatıcı simgesini yalnızca _inside_ callback (yani tokenı yazdırdığınız satırın yanında) kullanmanız gerekir. – paulvs

+0

Geri arama satırını ** ifadeyi kaydetmek için ** ifadesini kaydet – vadian

+0

Geri çağırma işlemini (json as! NSDictionary) self.rememberToken = rememberToken öğesinden sonra satırına taşıdım, ancak sonraki işleve gittiğimde yazdırmayı deneyin. self.rememberToken), hala hiçbir şey almıyorum – John

cevap

0

2 Bunu işleyebilir yolu vardır.

Her ikisinde de tonlarca öğretici ve SO cevabı var, bu yüzden buradaki uygulamayı sağlayamayacaksınız.

İlgili konular