gpt4 book ai didi

objective-c - 获取 Obj-C Cocoapod API 以在 Swift 3.0 应用程序中使用

转载 作者:行者123 更新时间:2023-11-30 13:03:58 25 4
gpt4 key购买 nike

我的情况如下:

我有一个用 Obj-C 编写的 SDK,并作为 Cocoapod 分发。它目前由我和我的用户应用程序使用。我的应用程序主要是用 Swift 编写的,由于我的 SDK 和其他几个第三方 pod,我使用桥接 header 来使用 pod。我正在使用的内容不会导出为框架,因此使用 use_frameworks!podfile行不通。

我已使用 XCode 8 迁移工具将我的应用迁移到 Swift 3.0,但现在它无法针对 Cocoapod SDK 进行编译。

例如 - 迁移后调用我的 SDK:

SparkCloud.sharedInstance().getDevices({ (devices:[Any]?, error:Error?) -> Void in ... 

会导致以下编译时错误:

Cannot convert value of type '([AnyObject]?, NSError?) -> Void' to expected argument type '(([Any]?, Error?) -> Void)?'

这是有道理的,因为 NSError 现在是 Error 并且来自 Obj-c 的非类型化可空 NSArray 现在解析为 [Any],但我的 SDK 没有反射(reflect)这一点。

Obj-C SDK 相关行是:

-(NSURLSessionDataTask *)getDevices:(nullable void (^)(NSArray * _Nullable sparkDevices, NSError * _Nullable error))completion;

我尝试添加NS_REFINED_FOR_SWIFT在我的 Obj-C 函数 header 上并编写一个包装器 Swift 文件以向 Swift 3.0 公开“正确”接口(interface),但我很困惑如何在我的应用程序中打包和使用这个新的 Swift“ header ”文件,因为 SDK 是一个Cocoapod库(不是框架),以及如何修改podspec为此归档。

非常感谢任何帮助/提示/指示!

最佳答案

如果您想在 xcode 8 中使用 Swift 2.3,那么您可以使用旧版。

关于objective-c - 获取 Obj-C Cocoapod API 以在 Swift 3.0 应用程序中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39606832/

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