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


83

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

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

回答:


169

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

より重要な質問は、「そのようなライブラリの使用方法」です。
この質問への回答はに依存しuse_frameworks!、あなたにフラグPodfile
レッツは、あなたが名前の使用のObjective-Cポッドを望んでいることを想像しますCoolObjectiveCLib

ポッドファイルが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"

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


ポッド.mファイル内から迅速なクラスにアクセスする方法(これらのポッドをカスタマイズしたい場合)?
JAHelia 2016年

1
迅速なプロジェクトのポッドファイルでuse_frameworksのコメントを外し、実際にはObjective-cカテゴリであるToastポッドを使用したいと思いました。import UIView + Toastと書くだけで、コンパイルエラーが発生しました。行の連続するステートメントは「;」で区切る必要があります。
Chanchal Raj 2016

@ChanchalRajはUIView+Toastあなたのポッドの名前ですか?そうでない場合は、ポッド名と一致する名前のインポートフレームワークを使用してみてください。
Vlad Papko 2016年

1
同じコードを使用してobjcコードを使用してファイルを高速化しましたが、そのようなモジュール「
PODNAME

4
use_frameworksで問題が発生した場合!、インポートステートメントが正しい形式で記述されていないことが原因である可能性があります。たとえば、podFileにが含まれている場合、pod 'iOS-Echarts'インポートは次のように 行われます。Swiftファイルimport iOS_Echarts Objective-Cファイル#import <iOS_Echarts/iOS-Echarts.h>
Kushal Ashok 2017

2

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

あなたの{PROJECT_NAME}-Bridging-Header.h使用において:

#import "xxxxxxx/xxxxxxx-umbrella.h"

わたしにはできる。



0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.