Как интегрировать Cocoapods с проектом Swift?


Как Apple представила Swift, их новый язык программирования, мне интересно, как вы можете интегрировать его с существующими библиотеками Objective-C, которые доступны через CocoaPods?

6 84

6 ответов:

Cocoapods 0.36 и выше представляет use_frameworks! инструкция, которая подразумевает, что заголовок моста не требуется для импорта Objective-C pods в Swift.

пожалуйста, найдите ниже полный пример использования MBProgressHUD и Alamofire:

1. Файл контейнера

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. Удаление

удалите #imports из вашего заголовка моста или даже удалите файл заголовка моста, если он вам не нужен. Если вы выберете последнюю возможность, не забудьте удалить путь (к этому удаленному заголовочному файлу моста) в конфигурации проекта Xcode.

3. Добавление импорта

добавить import MBProgressHUD и/или import Alamofire в верхней части каждого Swift-файлов, которые нуждаются в этих классах.

4. Исправьте перечисления, если это необходимо

теперь вы используете добросовестные рамки, поэтому ваши перечисления переместились в полете! У вас может быть линия Swift, которая была в порядке с мостом заголовок такой:

progressHUD.mode = MBProgressHUDModeIndeterminate

что теперь должно стать таким:

progressHUD.mode = MBProgressHUDMode.Indeterminate

не большое дело, но куча ошибок может привести вас в заблуждение, что у вас есть большая проблема, чем вы делаете, если вы используете много перечислений Objective-C.

(источник этого ответа)

для вашего сведения: я думаю (вам придется проверить самостоятельно, чтобы быть уверенным), что use_frameworks! инструкция в вашем Подфайле совместима только с проектами Xcode для платформы iOS >= 8.

похоже, что процесс похож на описанный в смешивать и сочетать на использование Swift с какао и Objective-C документация.

  1. создайте свой Подфайл и запустите pod install.
  2. создайте новый заголовочный файл Objective-C,Example-Bridging-Header.h и добавить его в проект.
  3. добавить оператор импорта к заголовок мосту.
  4. Set Objective-C Bridging Header для вашего цель:

enter image description here

теперь вы можете использовать свою библиотеку, в этом случае MKUnits, в вашем Swift-файле:

let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)

подробнее здесь: интеграция Cocoapods с проектом Swift

обновление: CocoaPods 0.36 стабильная версия была выпущена. Он официально поддерживает Swift.


CocoaPods теперь поддерживает Swift в своем последнем выпуске 0.36. Он все еще в бета-версии, но он работает.

сначала вам нужно установить CocoaPods beta (в настоящее время beta 2), запустив это в вашем терминале.

sudo gem install cocoapods --pre

вот и все. Вы можете добавить библиотеки Swift, как обычно.

но есть подвох, если вы хотите добавить библиотеку, написанную на Objective-C, в проект Swift через CocoaPods. Вам нужно добавить строку use_frameworks! в свой файл контейнера. Вот вам пример.

use_frameworks!
platform :ios, '8.0'

pod 'MagicalRecord'

Я написал блоге относительно этого также.

Если вы получаете файл не найден ошибка в преодоление-заголовка.h, вы можете убедиться, что ваша библиотека стручков связана в вашей схеме сборки.

в разделе устранение неполадок CocoaPods описывается, как это сделать в пункте #4 здесь

теперь вы можете использовать cocoapods 0.36.0 версии, запустив sudo gem install cocoapods который поддерживает интеграцию swift фреймворков . Когда вы используете фреймворк, написанный swift, вы должны явно использовать его в Podfile:

platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'

в моем случае я обнаружил, что я не добавлял стручки к основной цели, а только тестировал и тестировал цели в Подфайле, как объяснено здесь.