2015-03-02 16 views
16

Ich arbeite an einem in Swift geschriebenen iOS-Projekt und möchte einige Klassen aus dem regulären "App" -Projekt herausnehmen und zu einem wiederverwendbaren Swift bündeln Rahmen (und vielleicht auf Github und via Cocoapods öffentlich zugänglich machen).Erstellen eines Swift-Frameworks mit Verweisen auf Objective-C-Code

Ich habe Probleme, weil Frameworks anscheinend keine Objective-C-Bridging-Header haben können, aber um meinen Framework-Code zu kompilieren, muss ich auf mehrere Objective-C-Klassen verweisen (in diesem Fall auf Google Maps iOS) SDK).

Ich habe auch GoogleMaps.framework als eine verknüpfte Bibliothek in meinem Framework-Projekt hinzugefügt, aber dann, wie kann ich es aus Swift-Code "importieren"?

Ist das mit den aktuellen Tools und der Swift-Version sogar möglich, und wie soll ich vorgehen?

Danke.

Antwort

9

Es war nicht so kompliziert, eigentlich ... Ich habe nur ein paar Dinge falsch gemacht.

Zuerst sind die Überbrückungs-Header nicht in dieser Einstellung erforderlich: Das Google Maps iOS SDK wird als reguläre .framework-Datei bereitgestellt, sodass die Entwicklungssprache keinen Einfluss darauf hat, wie sie in Swift importiert werden kann. Apple erwähnt dies klar in der Dokumentation: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html, "Externe Frameworks importieren".

Es ist so einfach wie das Hinzufügen des Frameworks zum Abschnitt "Verknüpfen von Binärdateien mit Bibliotheken" der Projekteinstellungen. Vergessen Sie nicht, auch abhängige Bibliotheken und Frameworks hinzuzufügen (im Fall von GoogleMaps.framework gibt es einige).

Dann in Swift Code, sollten die Framework-Klassen zur Verfügung stehen einfach, indem Sie:

import GoogleMaps 

Keine Überbrückung Header, keinen Umgang mit "nicht-modularen Header usw." Fehler.

+0

Vielen Dank für Ihre Antwort, die ich gestoßen nur das gleiche Problem, aber wenn ich versuche, eine Bibliothek zu importieren, in meinem Fall SVProgressHUD Xcode die ewrror von No solchen Moduls –

+0

@SiuChungChan ‚SVProgressHUD‘ zeigt, sind Sie auch einen Rahmen bauen mit Cocoapod? Dein Problem ist vielleicht nicht genau das gleiche wie das, das ich hatte. Vielleicht wäre es besser, eine neue Frage zu stellen und mehr Informationen zur Verfügung zu stellen? – Romain

+0

Sie verwendeten keine Cocoapod, von den Geräuschen der Dinge, Romain? –

Verwandte Themen