我正在尝试编写一些调用现有 Objective C 函数的 Swift 代码。 Objective C 函数如下所示:
+(void) getCurrentUserprofileWithCompletion:(RequestCallback)completion {...}
其中 RequestCallback 在 .h 文件中定义为:
typedef void (^RequestCallback) (ResponseInfo *responseInfo);
我尝试了很多不同的方法,但似乎没有任何效果。对我来说最符合逻辑的代码是:
let callback: (responseInfo: ResponseInfo) -> Void = {(responseInfo: ResponseInfo) -> Void in
if let organization: Organizations = Organizations.organizationWithId(orgId) {
completionBlock(false, nil)
} else {
self.switchOrganization(user, organization: organization, completionBlock: completionBlock)
}
}
Users.getCurrentUserprofileWithCompletion(callback)
但是出现错误
cannot convert value of type '(responseInfo: ResponseInfo) -> Void' to expected argument type 'RequestCallback!'
有人知道我在这里做错了什么吗?我在互联网上搜索寻求帮助,包括各种苹果文档,但要么是我瞎了,要么是误读了,因为似乎没有任何效果。
提前致谢!
最佳答案
只需删除 responseInfo 的类型规范并使用 RequestCallback 类型
let callback: RequestCallback = { responseInfo -> Void in
if let organization: Organizations = Organizations.organizationWithId(orgId) {
completionBlock(false, nil)
} else {
self.switchOrganization(user, organization: organization, completionBlock: completionBlock)
}
}
Users.getCurrentUserprofileWithCompletion(callback)
关于ios - 使用 Swift 与需要 block 作为参数的 Objective C 方法进行交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187735/