As Apple introduced Swift, their new programming language, I wonder how you can integrate it with existing Objective-C libraries that are available via CocoaPods?
6 Answers
Cocoapods 0.36 and above introduces the use_frameworks!
instruction which implies that the bridging header is not required for importing Objective-C pods in Swift.
Please find below a full example using MBProgressHUD and Alamofire:
1. Podfile
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. Deletion
Remove the #imports from your bridging header or even delete the bridging header file if you do not need it. If you choose the latter possibility, do not forget to delete the path (to this deleted bridging header file) in your Xcode project configuration.
3. Adding imports
Add import MBProgressHUD
and/or import Alamofire
at the top of every Swift files that need these class(es).
4. Fix the enums if necessary
You're now using bona fide frameworks, so your enums have moved in flight! You might have a line of Swift that was fine with the bridging header like this:
progressHUD.mode = MBProgressHUDModeIndeterminate
That now has to become this:
progressHUD.mode = MBProgressHUDMode.Indeterminate
Not to big a deal, but the pile of errors might lead you astray that you have a bigger problem than you do if you are using a lot of Objective-C enums.
For your information: I guess (you will have to test by yourself to be sure) that the use_frameworks! instruction in your Podfile is only compatible with Xcode projects targeting iOS >= 8.

- 15,628
- 6
- 82
- 76
It seems that the process is similar to the one described in Mix and Match section of Using Swift with Cocoa and Objective-C documentation.
- Create your Podfile and run
pod install
. - Create a new Objective-C header file,
Example-Bridging-Header.h
, and add it to the project. - Add import statement to the bridge header.
- Set
Objective-C Bridging Header
for your target:
Now you can use your library, in that case, MKUnits, in your Swift file:
let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
More here: Integrating Cocoapods with a Swift project

- 2,517
- 1
- 18
- 12
-
3For me the import statement needed to include the project dir, aka `#import
` rather than `#import "Reachability.h"`. – Kyle Clegg Aug 23 '14 at 20:45 -
Just an update. Swift PODs, ie: Swift Libs will also be soon supported by CocoaPods. Next version 0.36 will bring the full Swift support in CocoaPods. Most of the feature is already complete and you can test-drive the Swift Pods right now using the instructions from my [blog-post](http://swiftwala.com/cocoapods-is-ready-for-swift) – Sachin Palewar Nov 26 '14 at 11:47
-
tried this and doesn't work for me. http://stackoverflow.com/questions/28304032/bridge-swift-to-objective-c-library-ono-using-cocoapods – Quincy Feb 03 '15 at 19:09
-
2Cocoapods 0.36 and above introduces the use_frameworks! instruction which implies that the bridging header is not required anymore for importing Objective-C pods in Swift (please see my answer below). – King-Wizard May 19 '15 at 17:10
-
5In addition to the above, I found that I had to add "Pods/**" to my "User Header Search Paths" in Build Settings. I also had to add "#import
" to the bridge file. – Swifty McSwifterton May 23 '15 at 14:57 -
-
King-Wizard is correct, there is no need for bridging headers anymore, very cool indeed. – dickyj Dec 18 '15 at 13:44
-
1Thank you Swifty. I tried use_frameworks! but it didn't work for me. Adding "Pods/**" to the user search path worked. – user3246173 Dec 24 '15 at 12:49
UPDATE: CocoaPods 0.36 stable version has been released. It officially supports Swift.
CocoaPods now supports Swift in their latest 0.36 release. It's still in beta but it works.
First you need to install the CocoaPods beta (currently beta 2) by running this in your Terminal.
sudo gem install cocoapods --pre
That's pretty much it. You can add Swift libraries like you would do normally.
But there's a catch if you want to add a library written in Objective-C to a Swift project via CocoaPods. You need to add the line use_frameworks!
to your Podfile. Here's an example.
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
I wrote a blog post regarding this as well.

- 30,617
- 60
- 187
- 303
-
3``use_frameworks!`` is only for iOS >= 8 right? If so you should write this in your answer. – Michael Apr 16 '15 at 17:47
Now you can use cocoapods 0.36.0 version by running sudo gem install cocoapods
which supports to integrate swift frameworks . When you use a framework written by swift, you should explicit use it in Podfile:
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'

- 6,745
- 5
- 41
- 59