以下代码给出了一个错误,因为'返回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
}
}

答案 0 :(得分: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)
}
}