2016-04-06 59 views
0

基本上,我有一個異步聯網功能:如何在Swift中存儲塊中的信息?

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() 
} 

所有我能做的就是打印(JSON)數據,我找回。我真的只想記住令牌,並將它存儲在一個屬性中。我遇到的問題是,如果我調用屬性,自主線程首先執行後我什麼也沒有得到。如何在存儲之後從屬性中訪問記憶標記?

或者我可以將它存儲在別的地方嗎?

最好的辦法是做什麼?

+0

您必須僅使用記憶標記_在回調中(即在您打印令牌的行附近)。 – paulvs

+0

在**表達式之後放置回調行**以保存令牌 – vadian

+0

我將回調(json as!NSDictionary)移至self.rememberToken = rememberToken之後的行中,但是當我轉到下一個函數並嘗試打印「 self.rememberToken),我什麼也沒得到 – John

回答

0

有2種方法可以處理這個問題:

  1. 使用代理和協議

  2. 使用塊

優選將塊。

有大量的教程和所以他們都回答所以不會在這裏提供的實施。