2015-04-06 6 views
6

Ich versuche ein neues Cocoa Touch Framework für iOS in Swift zu erstellen, mit einigen Bibliotheken von Cocoapods, aber ich kann es nicht funktionieren lassen. Ich weiß, dass es einige offene Fragen dazu gibt, aber keine von ihnen scheint mein Problem zu lösen.Wie verwende ich Cocoapoden in einem Swift-Framework?

Zu Testzwecken habe ich gerade ein leeres Cocoa Touch Framework erstellt, Cocoapods installiert und den Pod 'MBProgressHUD' hinzugefügt. Dann wird, wie documented by Apple (‚Import-Code aus demselben Rahmen Target‘ Abschnitt), importierte ich die MBProgressHUD Header in meinem Regenschirm-Header wie folgt aus:

#import "MBProgressHUD.h" 

Aber wenn ich kompilieren, ich habe diesen Fehler:

include of non-modular header inside framework module 

Ich habe die Einstellung 'Nicht-modulare Includes in Framework-Modulen zulassen' auf Ja gesetzt, aber es hat keine Auswirkungen.

Gibt es eine Möglichkeit, CocoaPods in einem Swift Framework zu verwenden?

+0

Ich hatte ähnliches Problem. Ich habe den Quellcode von cocoapods in mein Framework kopiert und die Objective-C-Header öffentlich gemacht. Ich habe an einigen Stellen gelesen, dass es mit Hilfe von Modulen gemacht werden könnte, aber ich war nicht dazu in der Lage. Wenn Sie mit Objective-C-Modulen arbeiten können, lassen Sie es mich wissen. – Abdullah

+0

Ich habe das auch tatsächlich versucht, aber ich brauche das AWS-SDK, das einige externe Frameworks verwendet, und ich konnte die Quellcodes für sie nicht finden. –

Antwort

14

Ich fand die Lösung, also werde ich es hier lassen, falls jemand anderes das gleiche Problem hat. So

, Cocoapods unterstützt iOS-Frameworks seit Version 0.36, und als it's said in their blog, es zu benutzen, in einem Rahmen, die Sie gerade diese Zeile in Ihrer Podfile hinzufügen:

use_frameworks! 

Danach wird in einem Swift Rahmen Sie brauchen nicht die H-Dateien in Ihrem Regenschirm Header enthalten, aber Sie müssen das Modul importieren, wo Sie es brauchen, zum Beispiel:

import MBProgressHUD 

das ist für mich funktioniert, hoffe, es hilft!

+1

Ich musste auch "Erlaube nicht modulare Includes in Framework-Modulen" in den Build-Einstellungen auf Ja setzen. –

+0

Dies scheint nicht zu funktionieren, wenn Sie iOS7 unterstützen müssen und daher use_frameworks nicht verwenden können! –

-1

Mit 'Objective-C Bridging Header' können wir Objective-C-Frameworks in Swift verwenden.

Beziehen Sie das folgende, es wird erklären, wie man Objective-C Rahmen (zum Beispiel Parse framework) in Swift verwendet.

Link1
Link2

+3

Sie können einen Bridging-Header in einem Framework nicht verwenden. –

Verwandte Themen