2015-08-07 22 views
60

C'è un modo per utilizzare un CocoaPod scritto in Objective C nel mio progetto Swift usando swift?Come utilizzare i Cocoapod Objective-C in un progetto Swift?

Ho appena creato una testata di collegamento? E in tal caso, posso accedere agli oggetti, alle classi e ai campi definiti dalle librerie nel CocoaPod in Swift?

Ci sono molti buoni CocoaPod là fuori scritti nell'Obiettivo C. Conosco solo Swift, e mi chiedo se c'è un modo per me di usare ancora quei CocoaPods.

risposta

128

La risposta di base alla tua domanda è Sì, è possibile utilizzare il codice obiettivo-c costruito con CocoaPods.

La domanda più importante è "Come utilizzare tali librerie?"
La risposta a questa domanda dipende dal flag use_frameworks! nell'Podfile:
Immaginiamo di voler utilizzare il pod Objective-C con il nome CoolObjectiveCLib.

Se il file pod utilizza use_frameworks! bandiera:

// Podfile 
use_frameworks! 
pod 'CoolObjectiveCLib' 

allora non c'è bisogno di aggiungere qualsiasi file di intestazione ponte.
Tutto quello che vi serve è quadro di importazione nel file sorgente Swift:

// MyClass.swift 
import CoolObjectiveCLib 

Ora è possibile utilizzare tutte le classi che vengono presentati in lib.

Se il file pod non usa use_frameworks! bandiera:

// Podfile 
pod 'CoolObjectiveCLib' 

quindi è necessario creare colmare file di intestazione e l'importazione non tutti i necessari header Objective-C:

// MyApp-Bridging-Header 
#import "CoolObjectiveCLib.h" 

Ora può utilizzare tutte le classi definite nelle intestazioni importate.

+0

come accedere a classi veloci da file pod .m interni (nel caso in cui desideri personalizzare questi pod)? – JAHelia

+1

Ho usato use_frameworks senza commento nel podfile del mio progetto rapido e volevo usare il pod Toast, che in realtà è una categoria obiettivo-c. Semplicemente scrivendo import UIView + Toast mi ha dato errore di compilazione: le dichiarazioni consecutive su una riga devono essere separate da ';' –

+0

@ChanchalRaj è il nome di 'UIView + Toast' per il tuo pod? Se non provi a usare framework di importazione il cui nome corrisponde al nome del tuo pod. –

0

Hai solo bisogno di un'intestazione di bridging e importa lì quello che ti serve.

0

In podFile usare la bandiera use_frameworks! All'interno Xcode nella struttura di cartelle Pod nella dipendenza, si aggiunge xxxxxxx-umbrella.h in File di supporto.

Nel vostro {PROJECT_NAME}-Bridging-Header.h uso:

#import "xxxxxxx/xxxxxxx-umbrella.h" 

funziona per me.

Problemi correlati