2015-04-06 12 views
6

Sto cercando di creare un nuovo Cocoa Touch Framework per iOS in Swift, utilizzando alcune librerie di Cocoapods, ma non riesco a farlo funzionare. So che ci sono alcune domande aperte a riguardo, ma nessuna sembra risolvere il mio problema.Come usare Cocoapods in un framework Swift?

Per motivi di prova, ho appena creato un Cocoa Touch Framework vuoto, installato Cocoapods e aggiunto il pod 'MBProgressHUD'. Poi, come documented by Apple ('importazione di codice all'interno del target stesso quadro' sezione), ho importato l'intestazione MBProgressHUD nel mio header ombrello del genere:

#import "MBProgressHUD.h" 

Ma quando compilo, ho questo errore:

include of non-modular header inside framework module 

Ho impostato l'opzione "Consenti moduli non modulari in Framework" su Sì, ma non ha alcun effetto.

C'è un modo per utilizzare CocoaPods in un framework Swift?

+0

Ho avuto problemi simili. Ho finito con la copia del codice sorgente cocoapods nel mio framework e rendendo pubbliche le intestazioni di Objective-C. Ho letto in un paio di posti che potrebbe essere fatto con l'aiuto di moduli, ma non ero in grado di farlo. Se sei in grado di fare con i moduli Objective-C fammi sapere. – Abdullah

+0

In realtà ho anche provato a farlo, ma ho bisogno di AWS SDK, che utilizza alcuni framework esterni, e non sono riuscito a trovare i codici sorgente per loro. –

risposta

14

Ho trovato la soluzione, quindi la lascio qui nel caso in cui qualcun altro abbia lo stesso problema.

Quindi, Cocoapods supporta iOS quadri dalla versione 0.36, e come it's said in their blog, per utilizzarlo in un quadro, non resta che aggiungere questa riga nel vostro Podfile:

use_frameworks! 

Dopo di che, in un quadro Swift , non è necessario includere i file .h nell'intestazione ombrello, ma si ha bisogno di importare il modulo ovunque ne abbiate bisogno, per esempio:

import MBProgressHUD 

Questo sta lavorando per me, spero che aiuta!

+1

Avevo anche bisogno di impostare "Consenti accessi non modulari nei moduli del framework" su yes nelle impostazioni di compilazione. –

+0

Questo non sembra funzionare se devi supportare iOS7 e quindi non puoi usare use_frameworks! –

-1

Utilizzo 'Intestazione di collegamento Objective-C' possiamo utilizzare i framework Objective-C in Swift.

Fare riferimento a quanto segue, Spiegherà come utilizzare il framework Objective-C (ad esempio Parse framework) in Swift.

Link1
Link2

+3

Non è possibile utilizzare un'intestazione di bridging all'interno di un framework. –

Problemi correlati