2016-07-22 11 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

代わりのStringcompletion handlerを使用して返す:

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

     } 
    } 
+0

はそんなにありがとうとして

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

は、それを呼び出しを – slimboy

関連する問題