2015-05-04 48 views
3

我是iOS的新手。我有問題,我們如何才能訪問關閉內的數據或變量。以下是我的代碼片段。關閉之外的快速訪問數據

self.fetchData() { data in 
     dispatch_async(dispatch_get_main_queue()) { 
      println("Finished request") 
      if let data = data { // unwrap your data (!= nil) 
      let myResponseStr = NSString(data: data, encoding: NSUTF8StringEncoding) as! String 

      } 
     } 
    }  

我想外界獲得myResponseStr,像 self.myString = myResponseStr

回答

8

你應該使用完成處理封閉在調用fetchData的功能,如:

func fetchString(completionHandler: (String?) ->()) { 
    self.fetchData() { responseData in 
     dispatch_async(dispatch_get_main_queue()) { 
      println("Finished request") 
      if let data = responseData { // unwrap your data (!= nil) 
       let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) as? String 
       completionHandler(responseString) 
      } else { 
       completionHandler(nil) 
      } 
     } 
    }  
} 

你」 d這樣稱呼它:

fetchString() { responseString in 
    // use `responseString` here, e.g. update UI and or model here 

    self.myString = responseString 
} 

// but not here, because the above runs asynchronously