Maybaygiare.org

Blog Network

CocoaPods Tutorial for Swift:Getting Started

アップデート注意:Rony RozenはこのチュートリアルをXcode11とSwift5用に更新しました。 ジョシュア-グリーンが原作を書いた。CocoaPodsはSwiftおよびObjective-C Cocoaプロジェクトのための人気のある依存関係マネージャーです。 CocoaPodsのウェブサイトによると、何千ものライブラリと何百万ものアプリがそれを使用しています。 しかし、依存関係マネージャーとは何か、なぜ必要なのですか?依存関係マネージャーを使用すると、アプリが使用するサードパーティの依存関係の追加、削除、更新、管理が簡単になります。

依存関係マネージャーを使用すると、

たとえば、独自のネットワークライブラリを再発明する代わりに、依存関係マネージャーを使用してAlamofireを簡単に取り込むことができます。 使用する正確なバージョンまたは許容可能なバージョンの範囲を指定できます。これは、alamofireが下位互換性のない変更で更新を取得した場合でも、更新の準備が整うまでアプリは古いバージョンを使用し続けることができることを意このチュートリアルでは、SwiftでCocoaPodsを使用する方法を学びます。 具体的には、次のようにします。

  • Cocoapodsをインストールします。
  • あなたがアイスクリームについて考えて取得する機能的なデモアプリで動作します。
  • ネットワークを追加するにはCocoaPodsを使用します。
  • セマンティックバージョニングについて学びます。
  • 柔軟なバージョンを使用して別のライブラリを追加します。
注:このCocoaPodsチュートリアルでは、iOSとSwiftの開発に基本的な精通している必要があります。 あなたはiOSおよび/またはSwiftに完全に新しいしている場合は、このチュートリアルを行う前に、このサイト上の他の書かれたおよび/またはビデオチュー または、私たちの本、iOSの見習いに飛び込みます。

このチュートリアルには、Core Graphicsを使用するクラスも含まれています。 コアグラフィックスの知識は有益ですが、それは必要ありません。 あなたがより多くを学びたい場合は、Swiftシリーズと私たちの近代的なコアグラフィックスをお読みください。

はじめに

チュートリアルの上部または下部にある材料のダウンロードボタンをクリックして、starterプロジェクトをダウンロードします。

このチュートリアルでは、Ice Cream Shop,Inc.というアプリを使用します。 CocoaPodsを使用して、独自のものを書くのではなく、簡単な方法で依存関係をアプリに追加します。このチュートリアルを続行する前に、CocoaPodsをインストールする必要があります。

このチュートリアルを続行する前に、CocoaPodsをインストールする必要があります。 幸いなことに、CocoaPodsはバージョン10.7以降のmacOS Xのすべてのバージョンに同梱されているRubyを使用しています。

ターミナルを開き、次のコマンドを入力します。

sudo gem install cocoapods

要求されたときにパスワードを入力します。 端末の出力には、さまざまなフェッチ、インストール、ドキュメント関連の出力が表示され、”XX gems installed”と結論づけられます。 注意:CocoaPodsをインストールするにはsudoを使用する必要がありますが、一度インストールすると、このチュートリアルでは再び使用す最後に、ターミナルに次のコマンドを入力して設定を完了します。

最後に、次のコマンドを入力します。:

pod setup --verbose

このプロセスは、CocoaPods Master Specsリポジトリを~/にクローンするため、数分かかります。cocoapods/お使いのコンピュータ上で。 p>

verboseオプションは、プロセスの実行中に進行状況を記録し、一見”凍結された”画面を見るのではなく、プロセスを見ることができます。素晴らしい、あなたは今CocoaPodsを使用するように設定されています!

アイスクリームショップ株式会社

あなたのトップのクライアントはIce Cream Shop,Inc.です。 彼らのアイスクリームは、彼らがカウンターで顧客の注文に追いつくことができないので、人気があります。 彼らは、顧客が自分のiphoneからアイスクリームを注文することを可能にする洗練されたiOSアプリを作成するためにあなたを募集しました。あなたはアプリの開発を始めました、そしてそれはうまくいっています。 IceCreamShopを開いて、あなたの進捗状況を見てみましょう。xcodeproj、その後、構築して実行しています。 あなたは口当たりの良いバニラアイスクリームコーンが表示されます:

Ice Cream Shop,Inc.ユーザーはこの画面からアイスクリームの味を選択できるはずですが、それはまだ不可能です。 最初のステップは、この機能の実装を完了することです。's start page

メインを開きます。Views/Storyboards&Nibsグループからのストーリーボードは、アプリのレイアウトを表示します。 ここでは、アプリの中心部の簡単な概要です、あなたのフレーバーシーンを選択してください:

あなたのフレーバーシーンを選択してください

  • PickFlavorViewControllerこのシーンのビューコントローラです。 ユーザーとの対話を処理し、さまざまなアイスクリームのフレーバーを表示するコレクションビューのデータを提供します。li>
  • IceCreamViewFlavorに基づいてアイスクリームコーンを表示するカスタムビューです。li>
  • ScoopCellScoopViewFlavorモデルから色を取得します。

すべてのアイスクリームショップながら、株式会社。 場所は、それぞれがあまりにも、独自の地元の味を運ぶ、共通の署名の味を持っています。 このため、webサービスはFlavorのデータを提供する必要があります。しかし、これはまだユーザーが自分のアイスクリームの味を選択できない理由を説明していません。

Pickflavorviewcontrollerを開きます。SwiftはControllersグループの下にあり、stubbedメソッドが表示されます:

private func loadFlavors() { // TO-DO: Implement this}

ああ、味はありません! 関数を実装する必要があります!p>

URLSessionを使用して独自のネットワーキングクラスを書くことができますが、簡単な方法があります:Alamofireを使用してください!このライブラリをダウンロードして、ソースファイルをプロジェクトにドラッグするように誘惑されるかもしれません。 しかし、それはそれを難しい方法でやっているだろう。 CocoaPodsははるかに優雅で、軽快な解決を提供する。最初の依存関係をインストールする

最初のステップはXcodeを閉じることです。 ああ、あなたはその権利を読んだ。 Podfileを作成し、プロジェクトの依存関係を定義します。

ターミナルを開き、Cdコマンドを使用してIceCreamShopプロジェクトを含むディレクトリに移動します。

cd ~/Path/To/Folder/Containing/IceCreamShop

次に、次のコマンドを入力します。

pod init

最後に、次のコマンドを入力して、Xcodeを使用してPodfileを編集します。

open -a Xcode Podfile
注意:標準の引用符をよりグラフィカルに魅力的な これにより、CocoaPodsが混乱してエラーが発生する可能性があります。 代わりに、Xcodeまたは別のプログラミングテキストエディタを使用してPodfileを編集します。

デフォルトのPodfileは次のようになります:P>

# Uncomment the next line to define a global platform for your project# platform :ios, '9.0'target 'IceCreamShop' do # Comment the next line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! # Pods for IceCreamShopend

#platform#で始まる他の行を削除します。あなたのPodfileは次のようになります:

platform :ios, '9.0'target 'IceCreamShop' do use_frameworks!end

これはCocoaPodsにあなたのプロジェクトがiOS9.0をターゲットにし、静的ライブラリの代わりにフ SwiftとCocoaPodsはどちらも静的リンクをサポートしていますが、含まれているすべてのライブラリがサポートしているわけではありません。 このプロジェクトで使用するものの1つはそうではありません。Swiftでのみプログラムした場合、これは少し奇妙に見えるかもしれません。

これは、Podfileが実際にはRubyで書かれているためです。 CocoaPodsを使用するためにRubyを知る必要はありませんが、小さなテキストエラーでもCocoaPodsがエラーをスローすることに注意する必要があります。

ライブラリについての言葉

ライブラリという用語は、実際にはライブラリやフレームワークを意味する一般的な用語としてよく使用され このチュートリアルでは、さりげなくあまりにも、これらの単語を混在させるの有罪です。ライブラリ、フレームワーク、CocoaPodの違いについて疑問に思うかもしれません。 あなたが用語を少し混乱させても大丈夫です!CocoaPod、またはpodは、CocoaPodsを使用してプロジェクトに追加されるライブラリまたはフレームワークの一般的な用語です。

iOS8では、コード、画像、その他のアセットを一緒にバンドルできる動的フレームワークが導入されました。 IOS8より前は、CocoaPodsを”fat”静的ライブラリとして作成しました。 “Fat”は、シミュレータ用のi386、デバイス用のarmv7など、いくつかのコード命令セットが含まれていることを意味します。 ただし、Swiftでは、静的ライブラリに画像やアセットなどのリソースを含めることはできません。

最初の依存関係のインストールに戻る

CocoaPodsを使用して最初の依存関係を追加する時が来ました。 Podfileに以下を追加します。use_frameworks!:

pod 'Alamofire', '4.9.1'

これは、CocoapodsにAlamofireバージョン4.9.1をプロジェクトの依存関係としPodfileを保存して閉じます。これで、CocoaPodsにプロジェクトの依存関係をインストールするように指示する必要があります。

IceCreamShopプロジェクトとPodfileを含むディレクトリにまだいることを確認した後、ターミナルに次のコマンドを入力します:次のような出力が表示されるはずです。

Analyzing dependenciesAdding spec repo `trunk` with CDN `https://cdn.cocoapods.org/`Downloading dependenciesInstalling Alamofire (4.9.1)Generating Pods projectIntegrating client project Please close any current Xcode sessions and use `IceCreamShop.xcworkspace` for this project from now on.Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

Finderを使用してプロジェクトフォルダを開くと、CocoaPodsが新しいIceCreamShopを作成しプロジェクトのすべての依存関係を保存するXcworkspaceファイルとPodsフォルダ。

注:今から、コマンドラインの警告が述べたように、あなたは常にでプロジェクトを開く必要があります。xcworkspaceファイルではなく、.xcodeproj。 それ以外の場合は、ビルドエラーが発生します。

素晴らしい! CocoaPodsを使用して最初の依存関係を追加しました!

インストール済みポッドの使用

今、あなたはあなたのブランドの新しい依存関係、Alamofireを使用します。Xcodeプロジェクトが開いている場合は、今すぐ閉じてIceCreamShopを開きます。xcworkspace.

Pickflavorviewcontrollerを開きます。swiftと既存のインポートのすぐ下に次のものを追加します。

import Alamofire

ビルドして実行します。 あなたはまだ変更は表示されませんが、残りはAlamofireが利用可能になりましたのでご安心ください。

Alamofire依存関係を統合した後の最初のコンパイル

次に、loadFlavors()を次のように置き換えます:P>

  1. Alamofireを使用してGETリクエストを作成し、アイスクリームの味を含むplistをダウンロードします。
     private func loadFlavors() { // 1 Alamofire.request( "https://www.raywenderlich.com/downloads/Flavors.plist", method: .get, encoding: PropertyListEncoding(format: .xml, options: 0)) .responsePropertyList { response in // 2 guard let self = self else { return } // 3 guard response.result.isSuccess, let dictionaryArray = response.result.value as? ] else { return } // 4 self.flavors = self.flavorFactory.flavors(from: dictionaryArray) // 5 self.collectionView.reloadData() self.selectFirstFlavor() } }

    このコードで何が起こっているのかを説明します。

    1. Alamofireを使用してGETリクエストを作成し、アイスクリームの味を含むplistをダウンロードします。
    2. 強い参照サイクルを解除するには、応答完了ブロックでselfselfresponse.resultresponse.result.valueself.flavorsFlavorFlavorFactory作成します。 これはあなたのために書いたクラスa”同僚”です(あなたは歓迎しています!これは辞書の配列を取り、それらを使用してFlavorのインスタンスを作成します。
    3. 最後に、コレクションビューをリロードし、最初のフレーバーを選択します。

    ビルドして実行します。 あなたは今、アイスクリームの味を選択することができます!

    味を選択してください

    今おいしいトッピングのために

    アプリはよさそうですが、あなたはまだそれを改善す

    アプリがflavorsファイルをダウンロードするのに時間がかかることに気付きましたか? 高速インターネット接続を使用している場合は、遅延に気付かないかもしれませんが、顧客は常にそれほど幸運ではありません。

    次のステップは、アプリにロードインジケータを表示して、ライブラリを動かすだけでなく、データをロードしていることを顧客が理解できるようにす MBProgressHUDは、ここでうまく機能する本当に素晴らしい指標です。 CocoaPodsをサポートしています; どのような偶然! :]

    このポッドを使用するには、Podfileに追加する必要があります。 コマンドラインからPodfileを開くのではなく、ワークスペースのPodsターゲットで見つけることができます。

    ワークスペースのPods

    Podfileを開き、Alamofire行の直後に次のように追加します。

    pod 'MBProgressHUD', '~> 1.0'

    前と同じように、ファイルを保存し、Pod install経由で依存関係をターミナルにインストールします…..

    今回は何か違うことに気づきますか? はい、バージョン番号を~>1.0として指定しました。 しかし、なぜ?

    CocoaPodsは、すべてのpodがセマンティックバージョン管理を使用することを推奨しています。 それが何であるかを理解するために時間を取ります。

    セマンティックバージョニング

    多くの場合、1.0.0のように書かれたバージョンが表示されます。 これらの3つの番号は、メジャー、マイナー、およびパッチのバージョン番号です。

    たとえば、バージョン番号1.0.0の場合、1はメジャー番号、最初の0はマイナー番号、2番目の0はパッチ番号です。

    セマンティックバージョニングの例

    メジャー番号が増加すると、バージョンに下位互換性のない変更が含まれていることを示します。 Podを次のメジャーバージョンにアップグレードするときは、ビルドエラーの修正が必要になるか、podの動作が以前とは異なる場合があります。

    マイナー番号が増加すると、バージョンに下位互換性のある新しい機能が含まれていることを示します。 アップグレードする場合、新しい機能が必要な場合と必要ない場合がありますが、ビルドエラーが発生したり、既存の動作が変更されたりすることはあ

    パッチ番号が増加した場合、新しいバージョンにはバグ修正が含まれていますが、新しい機能や動作の変更はありません。 一般的に、podの最新の安定したバージョンを得るためには、できるだけ早くパッチバージョンをアップグレードしたいと考えています。最後に、上記の規則に従って、最上位の番号(major、minor、patch)を増やすときは、下位の番号をゼロにリセットする必要があります。現在のバージョン番号が1.2.3のpodを考えてみましょう。

    下位互換性のない変更を行い、新しい機能を持たず、既存のバグを修正する場合は、バージョン2.0.0を与えるでしょう。podの現在のバージョンが2.4である場合。

    チャレンジ時間

    podの現在のバージョンが2.4である場合。

    チャレンジ時間

    また、バグを修正し、下位互換性のある機能を追加する変更を行いますが、新しいバージョン番号はどうすればよいですか?回答:2.5.0説明:下位互換性のある新しい機能を含む変更を行う場合は、マイナー番号を増やしてパッチをゼロにリセットします。podに現在のバージョンの3.5.8があり、下位互換性のない既存の機能に変更を加えた場合、新しいバージョン番号は何にする必要がありますか?

    答え:4.0.0
    説明:4.0.0
    説明:4.0.0
    : 変更によって既存の動作が変更され、下位互換性がない場合は、メジャー番号を増やし、マイナー番号とパッチ番号をゼロにリセットする必要があります。podの現在のバージョンが10.20.30で、バグのみを修正する場合、新しいバージョン番号は何にする必要がありますか?回答:10.20.31説明:バグを修正するだけの場合は、パッチ番号を増やすだけです。

    このすべてを言って、これらのルールには一つの例外があります:

    ポッドのバージョン番号が1.0.0未満の場合、それはベータ版とみなされます。 マイナー番号の増加には、下位互換性のない変更が含まれる場合があります。したがって、MBProgressHUBに戻ります:~> 1.01.02.0未満の最新バージョンをインストールする必要があります。

    これは、このポッドをインストールするときに最新のバグ修正と機能を得ることを保証しますが、誤って後方互換性のない変更を引き出すことは使用できる演算子は他にもいくつかあります。

    完全なリストについては、Podfile構文リファレンスを参照してください。演算子がCocoaPodsでどのように動作するかを学んだので、アプリを完成させます。

    演算子がCocoaPodsでどのように動作するかを学んだので、アプリを終了します。

    進行状況の表示

    思い出した場合は、フレーバーがアプリにロードされているときにユーザーを表示する進行状況インジケータを構築していました。この機能を終了するには、PickFlavorViewControllerに戻ります。swiftと他のインポートの直後に次のように追加します。

    import MBProgressHUD

    次に、loadFlavors():

    private func showLoadingHUD() { let hud = MBProgressHUD.showAdded(to: contentView, animated: true) hud.label.text = "Loading..."}private func hideLoadingHUD() { MBProgressHUD.hide(for: contentView, animated: true)}

    今、loadFlavors()showLoadingHUD()GETリクエストがダウンロードされている間、MBProgressHUDhideLoadingHUD()要求が終了するとHUDを非表示にします。 showLoadingHUD()self接頭辞は必要ありません。

    ビルドして実行します。 フレーバーの読み込み中に読み込みインジケーターが表示されるようになりました。 インターネット接続が速すぎる場合は、sleep(_:)hideLoadingHUD()直前に追加して、MBProgressHUDの良さを体験できるようにします。 :]

    ロードシンボルを持つアプリ

    素晴らしい仕事! 顧客は今、自分の好きなアイスクリームの味を選択することができ、味がダウンロードされている間、彼らはロードインジケータを参照してください。

    ここからどこに行くのですか?完成したプロジェクトは、このページの上部または下部にある[材料のダウンロード]ボタンを使用してダウンロードできます。

    完成したプロジェクト

    おめでとうございます!

    これで、依存関係の作成と変更、セマンティックバージョニングの理解など、CocoaPodsの使用の基本を知っています。 あなたは今、あなた自身のプロジェクトでそれらを使用して開始する準備が整いました!あなたがCocoaPodsでできることはもっとたくさんあります。

    あなたがCocoaPodsでできることはもっとたくさんあります。

    既存のpodは、CocoaPodsの公式ウェブサイトで検索できます。 また、この優れたツールの詳細については、CocoaPodsガイドを参照してください。 しかし、あなたがそれを使用し始めると、あなたはそれなしでどのように管理したのだろうかと警告されます! :]

    私はあなたがこのCocoaPodsチュートリアルを読んで楽しんだことを願っています。 あなたの好きなCocoaPodsのいくつかは何ですか? あなたは毎日のプロジェクトのために最も依存しているものはどれですか? 以下のコメントで、共有すること、または任意の質問をすること自由に感じます!h4>

    raywenderlich.com 週次

    このページは

    raywenderlich.com ニュースレターは、あなたがモバイル開発者として知っておく必要があるすべてのものに最新の滞在する最も簡単な方法です。

    私たちのチュートリアルやコースの毎週のダイジェストを取得し、ボーナスとして無料の詳細な電子メールコースを受け取ります!

    平均評価

    4.8/5

    このコンテンツのレーティングを追加

    サインインしてレーティングを追加

    33レーティング

コメントを残す

メールアドレスが公開されることはありません。