我在目标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:我读到这个问题:Swift : Use closure compatible with Objective-C block。做同样的事情。但是它不起作用
最佳答案
getUserCurrentProfile
是一个实例方法,您将其作为类方法调用。您应该在FBManager
(sharedInstance
可能?)的实例上调用它。:
FBManager.sharedInstance.getUserCurrentProfile { userInfo, error in)
appDelegate.showHomeView()
}
该错误表示它无法将闭包转换为
FBManager
,并且是正确的,因为您将其作为类函数调用,而编译器期望和实例对其进行操作。上述调用也可以写入curried函数调用中:FBManager.getUserCurrentProfile(FBManager.sharedInstance) { userInfo, error in)
appDelegate.showHomeView()
}