gpt4 book ai didi

ios - 使用 Swift 与需要 block 作为参数的 Objective C 方法进行交互

转载 作者:行者123 更新时间:2023-11-29 01:24:23 26 4
gpt4 key购买 nike

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

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