How to use Objective-C CocoaPods in a Swift Project

怎甘沉沦 提交于 2019-11-26 10:13:55

问题


Is there a way I can use a CocoaPod written in Objective-C in my Swift project using swift?

Do I just make a bridging header? And if so, can I access the objects, classes, and fields defined by the libraries in the CocoaPod in Swift?


回答1:


Basic answer to your question is Yes, you can use objective-c code built with CocoaPods.

More important question is "How to use such libs?"
Answer on this question depends on use_frameworks! flag in your Podfile:
Let's imagine that you want use Objective-C pod with name CoolObjectiveCLib.

If your pod file uses use_frameworks! flag:

// Podfile
use_frameworks!
pod 'CoolObjectiveCLib'

Then you don't need add any bridge header files.
Everything that you need is import framework in Swift source file:

// MyClass.swift
import CoolObjectiveCLib

Now you can use all classes that are presented in lib.

If your pod file doesn't use use_frameworks! flag:

// Podfile
pod 'CoolObjectiveCLib'

Then you need create bridging header file and import there all necessary Objective-C headers:

// MyApp-Bridging-Header
#import "CoolObjectiveCLib.h"

Now you can use all classes that are defined in imported headers.




回答2:


In podFile use the flag use_frameworks! Inside Xcode in the Pod folder structure in the dependency, you add xxxxxxx-umbrella.h in Support Files.

In your {PROJECT_NAME}-Bridging-Header.h use:

#import "xxxxxxx/xxxxxxx-umbrella.h"

It works for me.




回答3:


You just need a bridging header and import there what you need.




回答4:


AND don't forget to add Bridging Header file name to Target -> Build Settings -> Objective-C Bridging Header



来源:https://stackoverflow.com/questions/31884507/how-to-use-objective-c-cocoapods-in-a-swift-project

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!