使用在 Swift 2.1 中的 Objective C 中声明为块的闭包 Swift

Using closure Swift which is declared as block in Objective C in Swift 2.1

我在 Objective C 文件中声明了一个块,如下所示:

- (void) getUserCurrentProfile:(void (^)(UserInfo *userInfo,NSError * error)) callBack {
if ([FBSDKAccessToken currentAccessToken]) {
    //code here
   }];
}

在 Swift 文件中我称之为:

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
FBManager.getUserCurrentProfile({(userInfo:UserInfo?, error:NSError?) -> Void in
  appDelegate.showHomeView()
})

但我又完全犯了这个错误:

谁能给我个主意?

P/S:我读了这个问题:。并做同样的事情。但是不行

getUserCurrentProfile 是实例方法,您将其作为 class 方法调用。您应该在 FBManager 的实例上调用它(也许 sharedInstance?):

FBManager.sharedInstance.getUserCurrentProfile { userInfo, error in)
    appDelegate.showHomeView()
}

错误表明它无法将闭包转换为 FBManager,并且是正确的,因为您将其作为 class 函数调用并且编译器期望和实例进行操作。上述调用也可以写在柯里化函数调用中:

FBManager.getUserCurrentProfile(FBManager.sharedInstance) { userInfo, error in)
    appDelegate.showHomeView()
}