Exposee Klassen von Abhängigkeiten in Swift Framework

8

Ich habe zwei Frameworks in swift erstellt, nennen wir sie CoreFramework und MyFramework

MyFramework hat eine Abhängigkeit von CoreFramework und verwendet einige der Klassen, Structs und enums von CoreFramework in seinen öffentlichen Methoden, wie zum Beispiel:

%Vor%

Ich habe eine Podspec für beide Frameworks eingerichtet und kann MyFramework als Pod in meinem Projekt verwenden. In meinem Projekt würde ich etwas schreiben wie:

%Vor%

Dies kompiliert und Xcode gibt mir sogar den richtigen Typ, wenn ich die Variable alt + klicke, aber wenn ich den Typ von result wie folgt explizit angeben möchte:

%Vor%

Ich bekomme einen Compiler Fehler und ich muss CoreFramework

importieren

Was muss ich tun, um Dinge wie CoreStruct explizit in meinem Projekt verwenden zu können, ohne das zugrunde liegende Framework importieren zu müssen?

    
eyeballz 21.10.2015, 09:30
quelle

2 Antworten

2

In Swift gibt es keine Möglichkeit, das Importieren eines Moduls automatisch zu importieren. Das war eine bewusste Entscheidung für den Teil der Sprachdesigner und Swift ist streng darauf.

Es gibt ein sogenanntes "Umbrella-Framework", das Art tut, was Sie wollen, indem Sie eine Fassade für mehrere Unterrahmen erstellen können, aber Apple rät ausdrücklich davon ab, einen zu erstellen .

Abgesehen davon müssen Sie sicherstellen, dass (in Ihrem Beispiel) fetchData() und CoreStruct in dasselbe Framework kompiliert werden, was Sie tun können:

  • mit MyFramework include CoreFramework 's Code als ein git Submodul,
  • MyFramework verwenden Cocoapods, um CoreFramework innerhalb desselben Arbeitsbereichs zu erstellen (dh veröffentlichen Sie CoreFramework als Pod und fügen Sie es in MyFramework ohne die use_frameworks -Option in den podfile, so dass Sie zwei Projekte in einem Arbeitsbereich erhalten, die in einem Framework zusammengefasst sind),
  • Zusammenführen der Projekte (d. h. fügen Sie einfach alle Quelldateien von MyFramework und CoreFramework demselben Projekt hinzu),

... oder irgendetwas anderes, das dazu führt, dass die beiden Quellbäume in einem Framework kompiliert werden.

    
Paul Cantrell 30.10.2015, 00:21
quelle
-1

Sie könnten

tun %Vor%

um nur diesen speziellen Typ zu importieren, siehe Die Swift-Programmiersprache Referenz: Import-Deklarationen .

    
eik 30.10.2015 00:01
quelle

Tags und Links