gpt4 book ai didi

objective-c - 在 Swift 2.1 中使用在 Objective C 中声明为 block 的闭包 Swift

转载 作者:可可西里 更新时间:2023-11-01 02:18:05 26 4
gpt4 key购买 nike

我在 Objective C 文件中声明了这样一个 block :

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

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

enter image description here

谁能给我一个主意?

P/S: 我看了这个问题:Swift : Use closure compatible with Objective-C block .并做同样的事情。但是没用

最佳答案

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

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

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

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

关于objective-c - 在 Swift 2.1 中使用在 Objective C 中声明为 block 的闭包 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34761527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com