このプロセスは、 CocoaとObjective-CでSwiftを使用する ドキュメントの Mix and Match セクションで説明されているプロセスと似ているようです。
pod install
を実行します。Example-Bridging-Header.h
を作成し、プロジェクトに追加します。Objective-C Bridging Header
を設定します。これで、Swiftファイルでライブラリ(その場合はMKUnits)を使用できます。
let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
Cocoapods 0.36以降は、SwiftでObjective-Cポッドをインポートするためにブリッジングヘッダーが不要であることを意味するuse_frameworks!
命令を導入します。
MBProgressHUDおよびAlamofireを使用した完全な例を以下に示します。
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
ブリッジングヘッダーから#importsを削除するか、必要ない場合はブリッジングヘッダーファイルを削除します。後者の可能性を選択する場合は、Xcodeプロジェクト設定で(この削除されたブリッジングヘッダーファイルへの)パスを削除することを忘れないでください。
これらのクラスを必要とするすべてのSwiftファイルの先頭にimport MBProgressHUD
および/またはimport Alamofire
を追加します。
あなたは今、真正なフレームワークを使用しているので、列挙型は飛行中に移動しました!次のようなブリッジヘッダーで問題のないSwiftの行がある場合があります。
progressHUD.mode = MBProgressHUDModeIndeterminate
それは今これにならなければなりません:
progressHUD.mode = MBProgressHUDMode.Indeterminate
大したことではありませんが、多くのエラーが原因で、Objective-C列挙型をたくさん使用している場合よりも大きな問題があることに迷う可能性があります。
( この回答のソース )
あなたの情報について:use_frameworks!であると推測します(確実にテストする必要があります)。 Podfileの命令は、iOS 8以上を対象とするXcodeプロジェクトとのみ互換性があります。
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'
これについても ブログ投稿 を書きました。
Bridging-header.hでファイルが見つからないというエラーが発生する場合は、ビルドスキームでPodsライブラリがリンクされていることを確認してください。
CocoaPodsのトラブルシューティングセクションでは、アイテム#4でこれを行う方法について説明しています here
Swiftフレームワークの統合をサポートするSudo gem install cocoapods
を実行することで、cocoapods 0.36.0バージョンを使用できるようになりました。 Swiftで作成されたフレームワークを使用する場合、Podfileで明示的に使用する必要があります。
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'
私の場合、ポッドをメインターゲットに追加するのではなく、PodfileのTestおよびTestUIターゲットのみに here のように追加していることがわかりました。