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:
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:
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:
Ich bekomme einen Compiler Fehler und ich muss CoreFramework
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?
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:
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), MyFramework
und CoreFramework
demselben Projekt hinzu), ... oder irgendetwas anderes, das dazu führt, dass die beiden Quellbäume in einem Framework kompiliert werden.
Sie könnten
tun %Vor%um nur diesen speziellen Typ zu importieren, siehe Die Swift-Programmiersprache Referenz: Import-Deklarationen .