Sto tentando di utilizzare le classi Swift nel mio codice Objective-C, tuttavia le mie classi Swift non sembrano apparire nell'intestazione generata. Di conseguenza, la mia build fallisce con "Uso dell'identificatore non dichiarato 'HelloWorld'".L'intestazione Swift to Objective-C non contiene classi Swift
Ho utilizzato i modelli per creare un progetto denominato TestApp.
Ho la seguente Costruire Impostazioni nel mio obiettivo:
- Nome del prodotto: TestApp
- prodotto Nome Modulo: TestAppModule
- Definisce Modulo: Sì
la documentazione di Apple dice di usare #import <TestApp/TestAppModule-Swift.h>
ma questo non funziona.
Invece, sto usando #import "TestAppModule-Swift.h"
nel mio file ".m". Sembra trovare questo.
sono in grado di spostarsi su di essa, e sembra che questo ...
// Generated by Swift version 1.0 (swift-600.0.34.4.5)
#if defined(__has_include) && __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
...etc...
ma nessun classi definite in là.
Ho un file Swift nel progetto che assomiglia a questo ...
class HelloWorld {
func hello() {
println("hello world")
}
}
Perchè questo lavoro non utilizza il file di intestazione standard posizione #import <TestApp/TestAppModule-Swift.h>
?
Come posso ottenere le mie classi rapide in tale file di intestazione, quindi non otterrò l'errore "identificatore non dichiarato"?
Grazie! Ma modifica per favore la tua risposta ... "classe func newInstance()" – TJez
Grazie per aver segnalato che @TroyJ - nessun avviso sul compilatore SO :) – Logan
Aggiornamento: menzionare @echelon rispondi qui come commento alla risposta ufficiale, quindi che potrebbe aiutare qualcuno. Ho avuto tutto a posto.La parola chiave objc, la mia classe swift una sottoclasse di NSObject. Ancora non funzionava. Risulta, come menzionato da echelon nella sua risposta, che abbiamo bisogno di avere l'intestazione del bridging in atto, anche se non chiameremo obj-c nel codice Swift. Strano, ma ha funzionato. –