Cocoapod'lar bir Swift projesiyle nasıl entegre edilir?


Yanıtlar:


78

Cocoapods 0.36 ve üzeri , Swift'dekiuse_frameworks! Objective-C bölmelerini içe aktarmak için köprüleme başlığının gerekli olmadığını ima eden talimatı sunar.

Lütfen MBProgressHUD ve Alamofire kullanan tam bir örneği aşağıda bulabilirsiniz :

1. Pod dosyası

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. Silme

#İmports'u köprüleme başlığınızdan kaldırın veya ihtiyacınız yoksa köprüleme başlık dosyasını silin. İkinci olasılığı seçerseniz, Xcode proje yapılandırmanızdaki yolu (bu silinmiş köprü başlık dosyasına) silmeyi unutmayın.

3. İçe aktarım ekleme

Bu sınıf (lar) a ihtiyaç duyan her Swift dosyasının üstüne import MBProgressHUDve / veya import Alamofireüstüne ekleyin .

4. Gerekirse numaralandırmaları düzeltin

Artık gerçek çerçeveler kullanıyorsunuz, bu nedenle numaralarınız hareket halindeyken hareket etti! Aşağıdaki gibi köprüleme başlığı ile iyi olan bir Swift hattınız olabilir:

progressHUD.mode = MBProgressHUDModeIndeterminate

Artık şuna dönüşmesi gerekiyor:

progressHUD.mode = MBProgressHUDMode.Indeterminate

Büyük bir anlaşma değil, ancak bir yığın hata sizi, çok sayıda Objective-C numaralandırması kullanıyorsanız, sahip olduğunuzdan daha büyük bir sorunla karşı karşıya bırakmanıza neden olabilir.

( Bu cevabın kaynağı )

Bilginiz için: Sanırım (emin olmak için kendi kendinize test etmeniz gerekecek) use_frameworks! Podfile dosyanızdaki talimat yalnızca iOS> = 8'i hedefleyen Xcode projeleriyle uyumludur.


73

Görünüşe göre süreç Swift'i Cocoa ve Objective-C dokümantasyonunun Karıştır ve Eşleştir bölümünde anlatılana benzer .

  1. Pod dosyanızı oluşturun ve çalıştırın pod install.
  2. Yeni bir Objective-C başlık dosyası oluşturun Example-Bridging-Header.hve bunu projeye ekleyin.
  3. Köprü başlığına içe aktarma ifadesi ekleyin .
  4. Objective-C Bridging HeaderHedefiniz için ayarlayın :

görüntü açıklamasını buraya girin

Artık kitaplığınızı, bu durumda MKUnits'i Swift dosyanızda kullanabilirsiniz:

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

Daha fazlası burada: Cocoapod'ları bir Swift projesiyle entegre etme


3
Benim için import ifadesinin #import <Reachability/Reachability.h>yerine proje dizinini içermesi gerekiyordu #import "Reachability.h".
Kyle Clegg

Sadece bir güncelleme. Swift POD'lar, yani: Swift Libs yakında CocoaPods tarafından da desteklenecek. Sonraki sürüm 0.36, CocoaPods'ta tam Swift desteğini getirecek. Özelliğin çoğu zaten tamamlandı ve şu anda blog
yazımdaki

2
Cocoapods 0.36 ve üzeri, use_frameworks'ü tanıtır! Swift'de Objective-C bölmelerini içe aktarmak için köprü başlığının artık gerekli olmadığını ima eden talimat (lütfen aşağıdaki cevabıma bakın).
King-Wizard

5
Yukarıdakilere ek olarak, Derleme Ayarlarında "Kullanıcı Başlığı Arama Yollarıma" "Bölmeler / **" eklemem gerektiğini fark ettim. Ayrıca köprü dosyasına "#import <Foundation / Foundation.h>" eklemem gerekiyordu.
Swifty McSwifterton

1
Teşekkürler Swifty. Use_frameworks denedim! ama benim için işe yaramadı. Kullanıcı arama yoluna "Kapsül / **" eklemek işe yaradı.
user3246173

16

GÜNCELLEME : CocoaPods 0.36 kararlı sürümü yayınlandı. Resmi olarak Swift'i destekliyor.


CocoaPods artık Swift'i en son 0.36 sürümünde destekliyor. Hala beta sürümünde ama çalışıyor.

Öncelikle, Terminalinizde çalıştırarak CocoaPods beta'yı (şu anda beta 2) kurmanız gerekir.

sudo gem install cocoapods --pre

Hepsi bukadar. Normalde yaptığınız gibi Swift kitaplıkları ekleyebilirsiniz.

Ancak Objective-C'de yazılmış bir kitaplığı CocoaPods aracılığıyla bir Swift projesine eklemek istiyorsanız bir sorun var. Satırı use_frameworks!Pod Dosyanıza eklemeniz gerekir . İşte bir örnek.

use_frameworks!
platform :ios, '8.0'

pod 'MagicalRecord'

Bununla ilgili bir blog yazısı da yazdım .


3
use_frameworks!sadece iOS için> = 8 değil mi? Eğer öyleyse, bunu cevabınıza yazmalısınız.
yapılandırma dosyasındaki

2

Köprüleme-header.h dosyanızda bir dosya bulunamadı hatası alıyorsanız, Bölmeler kitaplığınızın Derleme Şemasında bağlantılı olduğundan emin olmak isteyebilirsiniz.

CocoaPods sorun giderme bölümü, buradaki 4. madde altında bunun nasıl yapılacağını açıklar


1

Artık sudo gem install cocoapodshızlı çerçeveleri entegre etmeyi destekleyen cocoapods 0.36.0 sürümünü kullanabilirsiniz . Swift tarafından yazılan bir çerçeve kullandığınızda, bunu Podfile'da açıkça kullanmalısınız:

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

0

Benim durumumda, ana hedefe kapsüller eklemediğimi, burada açıklandığı gibi yalnızca Podfile'daki Test ve TestUI hedeflerine eklediğimi buldum .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.