Appleが新しいプログラミング言語であるSwiftを発表したとき、CocoaPodsを介して利用できる既存のObjective-Cライブラリとどのように統合できるのだろうか。
Appleが新しいプログラミング言語であるSwiftを発表したとき、CocoaPodsを介して利用できる既存のObjective-Cライブラリとどのように統合できるのだろうか。
回答:
Cocoapods 0.36以降でuse_frameworks!は、SwiftでObjective-Cポッドをインポートするためにブリッジヘッダーが不要であることを意味する命令が導入されています。
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プロジェクトとのみ互換性があります。
このプロセスは、「SwiftとCocoaおよびObjective-Cのドキュメントの使用」の「ミックスアンドマッチ」セクションで説明されているプロセスと類似しているようです。
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とSwiftプロジェクトの統合
#import <Reachability/Reachability.h>のではなく#import "Reachability.h"。
更新:CocoaPods0.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'
これについてもブログ記事を書きました。
use_frameworks!iOS専用> = 8でしょ?もしそうなら、あなたはあなたの答えにこれを書くべきです。