Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Five Minute Swift: Dependency Management with CocoaPods

DZone's Guide to

Five Minute Swift: Dependency Management with CocoaPods

In the first of a series of quickfire tutorials around iOS app development in Swift, we take a look at using CocoaPods for managing third-party dependencies.

· Mobile Zone
Free Resource

Download this comprehensive Mobile Testing Reference Guide to help prioritize which mobile devices and OSs to test against, brought to you in partnership with Sauce Labs.

It's unlikely that you'll ever create an iOS app where you don't need to depend on some external libraries (and there's so many to choose from, just check out any installment of This Week in Mobile). There are a few options for managing these dependencies. There's the official Swift Package Manager, but that's in its early stages and targeted more toward Swift 3. Then you're down to a choice of two: Carthage or CocoaPods. Typically people use Carthage if they want to have more control over how the packages integrate. CocoaPods, the more established of the two, will create and update the Xcode workspace to integrate the frameworks. This five-minute tutorial will show you how to integrate CocoaPods into your projects 

CocoaPods Installation 

If you haven't already installed CocoaPods, it's simple. Just open up the terminal and use the gem package manager to install it. I know that seems weird, but it has to come from somewhere!

sudo gem install cocoapods


Once that completes you'll need to clone the master repo to your machine using the following command:

pod setup


That will take a while to complete, but when it does, you are good to go.

Integrating CocoaPods into Your Project 

I'll assume you've already got a project started — you'll need that first! To use pods, you are going to need to add a Podfile to the project, and it couldn't be easier. First, go to the folder that contains the project in your terminal and type the following to initialize a Podfile: 

pod init


And now you'll have a Podfile in that same directory. This is where you'll add your dependencies. 
If you open the Podfile you'll see something like this: 

# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'

target 'MyProject' do
  # Comment this line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyProject

end


It's pretty self-explanatory; if you're using Swift, there's nothing more to be done. However, for those on Objective-C make sure to comment out that use_frameworks! declaration. 

Adding a Third-Party Dependency

Let's add in a third-party library into our project. For this example, we'll add RxSwift. Usually, the project page on GitHub will have details on how to integrate this as a pod, as is the case here. As well as needing to include RxSwift, we need RxCocoa: 

# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'

target 'MyProject' do
  # Comment this line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

   pod 'RxSwift',    '~> 2.0'
   pod 'RxCocoa',    '~> 2.0'
  # Pods for MyProject

end


As well as declaring the name of the pod, you can include an optional version. It's good practice to do this so that everyone in your team is on the same version. Assuming that being on the latest is OK is not a good strategy! 

Finally, we need to have these packages installed, which is done by typing: 

pod install


You'll be prompted to close down any Xcode sessions related to this project, and to use the .xcworkspace from now on. 

Adding Dependencies Later 

You can keep on editing the Podfile as required; each time you make an update, you can use the following command to get your workspace in sync. 

pod update


Summary 

Here's your cheatsheet to getting started with CocoaPods: 

What How
Install CocoaPods on your machine 
(first time only)
 sudo gem install cocoapods
 pod setup 
Initialize a Podfile in your project directory  pod init    
Add dependencies to your Podfile Edit the Podfile in a text editor/Xcode   
Install the dependencies  pod install 
Add additional dependencies Update the Podfile
Run pod update  

Related Refcard:

Analysts agree that a mix of emulators/simulators and real devices are necessary to optimize your mobile app testing - learn more in this white paper, brought to you in partnership with Sauce Labs.

Topics:
ios ,swift ,cocoapods ,package manager

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}