2016-07-22 56 views
2

以下代碼給我一個錯誤,因爲'return self.myID'應位於最後一個大括號處。雖然如果我這樣做,它會聲稱self.myID是一個未解決的標識符,因爲它在閉包之外。我怎樣才能讓它可以在完成處理程序之外訪問self.myID並放置返回值。無法訪問完成處理程序外部的值

func chatPartnerId() -> String? { 
 
     nextrequest.startWithCompletionHandler { (connection: FBSDKGraphRequestConnection! , result: AnyObject!, error: NSError!) -> Void in 
 
      self.myID = result["id"] as! String 
 
      return self.myID 
 

 
     } 
 
    }

回答

1

而不是返回String使用completion handler的:

func chatPartnerId(completion: (result: AnyObject?, error: NSError?)->()) { 
     nextrequest.startWithCompletionHandler { (connection: FBSDKGraphRequestConnection! , result: AnyObject!, error: NSError!) -> Void in 
      if((error) != nil){ 
       completion(result:nil,error:error) 
      } 
      else{ 
       self.myID = result["id"] as! String 
       completion(result:self.myID, error:nil) 
      } 


     } 
    } 

稱其爲

chatPartnerId() { (result,error) -> Void in 
     if let error = error{ 
      print(error) 
     } 
     if result != nil { 
      print(result) 

     } 
    } 
+0

非常感謝你 – slimboy

相關問題