Ho un progetto misto Swift e Objective-C. Per accedere a un'API pubblica Swift in Objective-C, l'utente API deve attualmente importare "MyModule-Swift.h". Ho già un'intestazione dell'ombrello Objective-C chiamata "MyModule.h". Tuttavia, l'importazione di "MyModule.h" non funzionerà con le API Swift. Ho provato a importare "MyModule-Swift.h" nell'intestazione dell'ombrello, ma non lo trova (presumo poiché è generato al volo da Xcode).Include -Swift.h nell'intestazione dell'ombrello
Qualsiasi suggerimento in modo che un utente API possa sempre importare "MyModule.h" per utilizzare API pubbliche scritte in Swift/Objective-C sarà molto apprezzato.
========================================= =======
Modifica: Mi scuso per non aver trovato il tempo per inquadrare correttamente la domanda. Ho un quadro chiamato MyModule
.
Ho una classe Objective-C chiamato ABUser
,
@interface ABUser: NSObject
- (void)walk;
@end
ho voluto aggiungere nuovo comportamento di questa classe secondo i Swift, così ho definito un'estensione
extension ABUser {
func swiftWalk()
}
Ora, dire che volevo per accedere al metodo swiftWalk
definito su ABUser
da un'app Objective-C, dovrei #import <MyModule/MyModule-Swift.h>
. #import <MyModule/MyModule.h>
funzionerebbe se volessi utilizzare il metodo walk
. Ciò presuppone che l'intestazione dell'ombrello MyModule.h
importi ABUser.h
.
Ho sempre desiderato l'app Objective-C su #import <MyModule/MyModule.h>
e non mi devo mai preoccupare se un'API è stata scritta in Objective-C o Swift nel framework. Così, ho provato a importare MyModule-Swift.h
nell'intestazione dell'ombrello MyModule.h
. Ma la mia app Objective-C non si è compilata se lo ha fatto. Non sono sicuro, se questo è perché MyModule-Swift.h
viene generato da Xcode al volo durante il processo di compilazione.
Edit 2: Aggiunto un progetto di esempio per riprodurre il problema qui: https://github.com/priteshshah1983/MyObjectiveCApp
Il codice di riferimento è in ViewController.m
. La compilazione fallirà con il ramo master
. Per farlo funzionare, controlla il ramo working
.
"Sentitevi liberi di spiegare" Qual è la mia motivazione? Ti sei aggiudicato la risposta corretta, quindi la ricompensa è impossibile da vincere. Hai buttato via anche 50 punti per niente ... E la domanda è ancora abbastanza brutta. Che cosa significa "Ma, questo non ha funzionato" anche _mean_? – matt
Ok, ho ritirato la risposta come risposta corretta. Scusa, non penso di poterlo spiegare meglio di questo però. Ho notato che mi hai già votato per questo! – pshah
Cosa non è possibile mostrare tutto il codice effettivo necessario a qualcuno per capire e riprodurre il problema? – matt