网上看了很多文章,但是除了基本配置外,其他的一律没解决我的问题,经过一天的摸索,终于在下班时分摸索成功了。下面给大家说一下我踩的坑以及最后成功的方法。
cocoapods配置
咱们先从cocoapods说起。因为 Apple 不允许开发者构建内含 Swift 代码的静态库,所以要往 OC 项目中集成第三方 Swift 代码的时候就只能通过动态框架( framework )的形式了。而 CocoaPods 还不能很好地将 framework 和静态库混编到一起,所以要么不用 framework,要用就要全部用上。关于这一点,CocoaPods 官博上的原话是这样说的:
This is an all or nothing approach per integrated targets, because we can’t ensure to properly build frameworks, whose transitive dependencies are static libraries.
所以,到这里汇集成一句话:Podfile文件中用 “use_frameworks!”。
Xcode配置
设置混编
当项目中没有.swift文件时,需创建一个.swift文件。第一次创建"Test.swift"文件时,会弹窗提示你是否需要自动生成一个桥接文件,这个时候你要毫不犹豫的点是!
但是如果假如你点了否,没关系,稍微再多花点时间而已:
1.手动创建一个头文件,名字叫Your_Product_Name-Bridging-Header.h。
2.确保你的项目目录下至少有一个 .swift 文件。
3.确保在Targets的 Build Settings 里,Product Module Name是有值的。(如果没有,直接设置为$(PRODUCT_NAME)就可以了)
还有一点需要注意,您的swift language version要和导入的第三方库相匹配。
下面代码中就是我踩的坑了。
代码配置
按照网上的资料,我就直接在要使用第三方库的地方直接导入“项目名-swift.h”文件并使用了库中其方法,结果报错了,not find func...此刻的我毫不慌张,我把报错在网上一搜,结果懵逼了,搜不到!然后我还是毫不慌张,整整用了一下午的时间这试一下,那试一下,最后还真让我给鼓捣成功了!具体方法如下:
在bridge文件中导入需要引用的第三方库
在需要用到三方库的地方导入“项目名-swift.h”文件以及桥接文件
两个文件都要导入哦
最终大功告成!