Cerco di integrare il Swift
codice nella mia app. La mia app è scritta Objective-C
e ho aggiunto una Swift
classe. Ho fatto tutto qui descritto . Ma il mio problema è che Xcode
non ho creato il -Swift.h
file, solo le intestazioni ponte. Quindi l'ho creato, ma in realtà è vuoto. Posso usare tutte le mie classi ObjC in Swift, ma non posso farlo viceversa. Ho segnato la mia lezione veloce con @objc
ma non mi ha aiutato. Cosa posso fare ora?
EDIT: Apple dice: "Quando importi il codice Swift in Objective-C, fai affidamento su un Xcode-generated
file di intestazione per esporre quei file su Objective-C. [...] Il nome di questa intestazione è il nome del modulo del tuo prodotto seguito dall'aggiunta di" -Swift.h ”."
Ora, quando voglio importare quel file, viene visualizzato un errore:
//MainMenu.m
#import "myProjectModule-Swift.h" //Error: 'myProjectModule-Swift.h' file not found
@implementation MainMenu
Ecco il mio file FBManager.swift:
@objc class FBManager: NSObject {
var descr = "FBManager class"
init() {
super.init()
}
func desc(){
println(descr)
}
func getSharedGameState() -> GameState{
return GameState.sharedGameState() //OK! GameState is written in Objective-C and no error here
}
}
myProjectModule
? Il -Swift.h
file dovrebbe iniziare con il nome dell'app. Hai un file che termina con -Bridging-Header.h
? Dovresti. In tal caso, la prima parte di quel file è il nome del tuo progetto. Combina la prima parte di quel nome file con -Swift.h
quello che dovresti includere.
-Swift.h
sul mio Mac non si trovano file che finiscono , eppure posso includerlo. Quindi non rimanere impegnato a cercare un file del genere. Assicurati solo di nominarlo correttamente.
#import <MyProjectName/MyProjectName-Swift.h>
YourProjectName-Swift.h
dovrebbe essere un file di intestazione magico che Xcode crea automaticamente per te durante la compilazione (non lo vedrai effettivamente nel browser del progetto). Prova a eliminare quello che hai creato e aggiungi#import YourProjectName-Swift.h
ai file in cui desideri utilizzare le classi Swift.