使用Swift与期望块作为参数的Objective C方法进行交互

时间:2015-12-09 19:50:04

标签: ios swift

我正在尝试编写一些调用现有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)

但这是错误

  

无法转换类型'(responseInfo:ResponseInfo)的值 - >虚空'预期参数类型' RequestCallback!'

有谁知道我在这里做错了什么?我已经搜索了互联网寻求帮助,包括各种Apple文档,但要么我是盲目的还是误读,因为似乎没有任何工作。

提前致谢!

1 个答案:

答案 0 :(得分:1)

只需删除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)