Ich habe ein gemischtes Swift und Objective-C-Projekt. Um auf eine öffentliche Swift-API in Objective-C zuzugreifen, muss der API-Consumer derzeit "MyModule-Swift.h" importieren. Ich habe bereits einen Objective-C Regenschirm-Header namens "MyModule.h". Aber das Importieren von "MyModule.h" wird nicht für die Swift-APIs funktionieren. Ich habe versucht, "MyModule-Swift.h" in den Schirm-Header zu importieren, aber es findet es nicht (ich nehme an, da es im laufenden Betrieb von Xcode erzeugt wird).Include -Swift.h im Schirmkopf
Alle Vorschläge, dass ein API-Consumer immer "MyModule.h" importieren kann, um öffentliche APIs zu verwenden, die in Swift/Objective-C geschrieben wurden, werden sehr geschätzt.
============================================== =
Bearbeiten: Ich entschuldige mich dafür, nicht die Zeit nehmen, um die Frage richtig zu gestalten. Ich habe ein Framework namens MyModule
.
Ich habe eine Objective-C-Klasse namens ABUser
,
@interface ABUser: NSObject
- (void)walk;
@end
ich neues Verhalten zu dieser Klasse mit Swift, hinzufügen wollte so definiert ich eine Verlängerung
extension ABUser {
func swiftWalk()
}
Nun, sage ich wollte Um auf die swiftWalk
Methode zuzugreifen, die auf ABUser
von einer Objective-C App definiert wird, müsste ich #import <MyModule/MyModule-Swift.h>
. #import <MyModule/MyModule.h>
würde funktionieren, wenn ich die walk
Methode verwenden wollte. Dies setzt voraus, dass der Schirmkopf MyModule.h
Importe ABUser.h
importiert.
Ich wollte immer die Objective-C-App #import <MyModule/MyModule.h>
und muss sich nie sorgen, ob eine API in Objective-C oder Swift im Framework geschrieben wurde. Also, ich habe versucht, MyModule-Swift.h
in den Schirmkopf MyModule.h
zu importieren. Aber meine Objective-C-App kompiliert nicht, wenn das gemacht wird. Nicht sicher, wenn dies der Fall ist, weil MyModule-Swift.h
während des Build-Prozesses von Xcode generiert wird.
Edit 2: ein Beispielprojekt hinzugefügt hier, um dieses Problem zu reproduzieren: https://github.com/priteshshah1983/MyObjectiveCApp
Der entsprechende Code ist in ViewController.m
. Der Build wird mit dem Zweig master
fehlschlagen. Überprüfen Sie die working
Verzweigung, um es zu arbeiten.
"Bitte zögern Sie zu erklären" Was ist meine Motivation? Du hast dir die richtige Antwort gegeben, also ist das Kopfgeld nicht gewinnbar. Du hast 50 Punkte auch für nichts weggeworfen ... Und die Frage ist immer noch ziemlich mies. Was "Aber, das hat nicht funktioniert" sogar _mean_? – matt
Ok, ich habe meine Antwort als richtige Antwort zurückgenommen. Tut mir leid, ich glaube nicht, dass ich es besser erklären kann. Ich habe bemerkt, dass du mich bereits dafür gewählt hast! – pshah
Was können Sie nicht alles den tatsächlichen Code zeigen, der benötigt wird, damit jemand das Problem versteht und reproduziert? – matt