Quello che vuoi fare è chiamato forward declaration
. Per inoltrare dichiarare un enum si può fare:
enum name;
Ma dal momento che il compilatore non conoscere la dimensione della enum, sarà solo in grado di usarlo come un puntatore nel file di intestazione. Anche questo potrebbe rivelarsi problematico se si usano flag di compilazione come -pedantic
.
Quindi, in breve, non c'è un buon modo per farlo. La tua migliore scommessa è di non farlo, e invece accedi all'enum dal tuo file di implementazione (.m).
Nel file di implementazione, #import
Swift colmare file di intestazione, e, senza conoscere maggiori dettagli circa il tuo problema, è possibile aggiungere le proprietà private che utilizzano l'enum come questo:
@interface MyObjCClassDefinedInTheHFile()
@property (nonatomic, assign) SomeSwiftEnum type;
@end
Spero che questo aiuti.
D'accordo che nessuna buona risposta. La base di codice su cui sto lavorando è in flusso tra Swift e Objective C, quindi la mia soluzione qui era dichiarare l'enum in un file objc (piuttosto) appropriato, fino a quando non siamo completamente su Swift. È molto più semplice condividere enum tra objc e swift in questo modo, usando il file di intestazione del bridging. – Elise
Esattamente, sfortunatamente potrebbe essere la soluzione migliore, specialmente se l'enum ha bisogno di avere così tanta visibilità all'interno del progetto. – raf
Avanti dichiarando funziona: 'typedef SWIFT_ENUM (NSInteger, MyEnum);' – amleszk