如何在Swift项目中使用Objective-C CocoaPods

sha*_*awg 79 objective-c cocoapods swift

有没有办法可以使用swift在我的Swift项目中使用Objective-C编写的CocoaPod?

我只是做一个桥接头?如果是这样,我可以访问Swift中CocoaPod中的库定义的对象,类和字段吗?

Vla*_*pko 162

您的问题的基本答案是肯定的,您可以使用使用CocoaPods构建的objective-c代码.

更重要的问题是"如何使用这些库?"
关于这个问题的答案取决于use_frameworks!你的旗帜Podfile:
让我们想象你想要使用带有名字的Objective-C pod CoolObjectiveCLib.

如果您的pod文件使用use_frameworks!flag:

// Podfile
use_frameworks!
pod 'CoolObjectiveCLib'
Run Code Online (Sandbox Code Playgroud)

然后,您不需要添加任何桥头文件.
你需要的一切都是Swift源文件中的导入框架:

// MyClass.swift
import CoolObjectiveCLib
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用lib中显示的所有类.

如果你的pod文件没有使用use_frameworks!flag:

// Podfile
pod 'CoolObjectiveCLib'
Run Code Online (Sandbox Code Playgroud)

然后你需要创建桥接头文件并导入所有必需的Objective-C头:

// MyApp-Bridging-Header
#import "CoolObjectiveCLib.h"
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用导入标头中定义的所有类.

  • 如果您遇到**use_frameworks!**的问题,可能是因为import语句没有以正确的格式编写.例如,如果podFile包含`pod'iOS-Echarts'`,则导入将发生如下:_Swift file_:`import iOS_Echarts` _Objective-C file _:`#import <iOS_Echarts/iOS-Echarts.h> (4认同)