web-dev-qa-db-ja.com

CocoapodsをSwiftプロジェクトと統合する方法は?

Appleが Swift を導入したため、新しいプログラミング言語であるため、 CocoaPods

84
Michal K.

このプロセスは、 CocoaとObjective-CでSwiftを使用する ドキュメントの Mix and Match セクションで説明されているプロセスと似ているようです。

  1. Podfileを作成し、pod installを実行します。
  2. 新しいObjective-CヘッダーファイルExample-Bridging-Header.hを作成し、プロジェクトに追加します。
  3. Importステートメントをbridgeヘッダーに追加します
  4. ターゲットにObjective-C Bridging Headerを設定します。

enter image description here

これで、Swiftファイルでライブラリ(その場合はMKUnits)を使用できます。

let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)

詳細: CocoapodsとSwiftプロジェクトの統合

72
Michal K.

Cocoapods 0.36以降は、SwiftでObjective-Cポッドをインポートするためにブリッジングヘッダーが不要であることを意味するuse_frameworks!命令を導入します。

MBProgressHUDおよびAlamofireを使用した完全な例を以下に示します。

1.ポッドファイル

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.3'
use_frameworks!

pod 'Alamofire', '>= 1.2.2' # Swift pod
pod 'MBProgressHUD', '>= 0.9.1' # Objective-C pod

2.削除

ブリッジングヘッダーから#importsを削除するか、必要ない場合はブリッジングヘッダーファイルを削除します。後者の可能性を選択する場合は、Xcodeプロジェクト設定で(この削除されたブリッジングヘッダーファイルへの)パスを削除することを忘れないでください。

3.インポートの追加

これらのクラスを必要とするすべてのSwiftファイルの先頭にimport MBProgressHUDおよび/またはimport Alamofireを追加します。

4.必要に応じて列挙型を修正します

あなたは今、真正なフレームワークを使用しているので、列挙型は飛行中に移動しました!次のようなブリッジヘッダーで問題のないSwiftの行がある場合があります。

progressHUD.mode = MBProgressHUDModeIndeterminate

それは今これにならなければなりません:

progressHUD.mode = MBProgressHUDMode.Indeterminate

大したことではありませんが、多くのエラーが原因で、Objective-C列挙型をたくさん使用している場合よりも大きな問題があることに迷う可能性があります。

この回答のソース

あなたの情報について:use_frameworks!であると推測します(確実にテストする必要があります)。 Podfileの命令は、iOS 8以上を対象とするXcodeプロジェクトとのみ互換性があります。

78
King-Wizard

UPDATE:CocoaPods 0.36安定バージョンがリリースされました。 Swiftを公式にサポートしています。


CocoaPodsは、最新の0.36リリースでSwiftをサポートするようになりました。まだベータ版ですが、動作します。

まず、ターミナルでこれを実行して、CocoaPodsベータ版(現在はベータ2)をインストールする必要があります。

Sudo gem install cocoapods --pre

それはほとんどそれです。通常どおりにSwiftライブラリを追加できます。

ただし、Objective-Cで記述されたライブラリをCocoaPodsを介してSwiftプロジェクトに追加する場合は、注意が必要です。行use_frameworks!をPodfileに追加する必要があります。以下に例を示します。

use_frameworks!
platform :ios, '8.0'

pod 'MagicalRecord'

これについても ブログ投稿 を書きました。

16
Isuru

Bridging-header.hでファイルが見つからないというエラーが発生する場合は、ビルドスキームでPodsライブラリがリンクされていることを確認してください。

CocoaPodsのトラブルシューティングセクションでは、アイテム#4でこれを行う方法について説明しています here

2
Michelle

Swiftフレームワークの統合をサポートするSudo gem install cocoapodsを実行することで、cocoapods 0.36.0バージョンを使用できるようになりました。 Swiftで作成されたフレームワークを使用する場合、Podfileで明示的に使用する必要があります。

platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'
1
Allen

私の場合、ポッドをメインターゲットに追加するのではなく、PodfileのTestおよびTestUIターゲットのみに here のように追加していることがわかりました。

0
zeeawan