web-dev-qa-db-ja.com

SwiftプロジェクトでObjective-C CocoaPodsを使用する方法

Swiftを使用してSwiftプロジェクトでObjective-Cで記述されたCocoaPodを使用する方法はありますか?

ブリッジングヘッダーを作成するだけですか?もしそうなら、SwiftのCocoaPodのライブラリで定義されたオブジェクト、クラス、フィールドにアクセスできますか?

79
shaydawg

あなたの質問に対する基本的な答えは「はい」です。CocoaPodsで構築されたobjective-cコードを使用できます。

より重要な質問は、「このようなライブラリを使用する方法は?」です。
この質問に対する回答は、Podfileuse_frameworks!フラグに依存します。
名前がCoolObjectiveCLibのObjective-Cポッドを使用することを想像してみましょう。

ポッドファイルがuse_frameworks!フラグを使用している場合:

// Podfile
use_frameworks!
pod 'CoolObjectiveCLib'

その後、ブリッジヘッダーファイルを追加する必要はありません。
必要なものはすべてSwiftソースファイルのインポートフレームワークです。

// MyClass.Swift
import CoolObjectiveCLib

これで、libに提示されているすべてのクラスを使用できます。

ポッドファイルがuse_frameworks!フラグを使用しない場合:

// Podfile
pod 'CoolObjectiveCLib'

次に、ブリッジングヘッダーファイルを作成し、必要なすべてのObjective-Cヘッダーをインポートする必要があります。

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

これで、インポートされたヘッダーで定義されているすべてのクラスを使用できます。

161
Vlad Papko

PodFileでは、フラグuse_frameworks!を使用します。依存関係のPodフォルダー構造のXcode内で、サポートファイルにxxxxxxx-umbrella.hを追加します。

{PROJECT_NAME}-Bridging-Header.hで次を使用します。

#import "xxxxxxx/xxxxxxx-umbrella.h"

わたしにはできる。

2
RodolfoNeto

また、ターゲットにブリッジングヘッダーファイル名を追加することを忘れないでください->ビルド設定-> Objective-Cブリッジングヘッダー

0
o0sea0o

ブリッジングヘッダーが必要なだけで、そこに必要なものをインポートします。

0
Lucian Boboc