2015-03-26 9 views
8

Ho un progetto che utilizza il Bridging Header generato da Swift e il progetto è stato impostato correttamente (non ci sono spazi nei nomi, utilizza i moduli , pre-dichiarare le classi Swift nel mio file .mm, Cancellare i dati derivati, fare una ricostruzione pulita ecc ...). Il Bridging Header è stato generato bene, ma il generato automaticamente -Swift.h ha degli errori. Quel che è ancora peggio, quegli errori sono nelle versioni generate (in project creation - Swift) di AppDelegate e ViewController che normalmente compilerebbero bene. Gli errori nel -Swift.h sono:Progetto Swift & Objective-C - generato -Swift.h errore - Impossibile trovare la dichiarazione dell'interfaccia per UIViewController

  • @interface AppDelegate : UIResponder <UIApplicationDelegate>
    >> Non riesci a trovare dichiarazione di interfaccia per 'UIResponder', superclasse della dichiarazione
    >> Non riesci a trovare il protocollo 'AppDelegate' per 'UIApplicationDelegate '
  • @interface ViewController : UIViewController
    >> non riesci a trovare dichiarazione di interfaccia per 'UIViewController', superclasse di' ViewContr oller '

Ho cercato Stack Overflow e la rete e non riesco a trovare alcuna risposta che risolva questo particolare problema. Qualcun altro ha avuto questo? Oppure, c'è un modo per contrassegnare le mie classi AppDelegate e ViewController in modo che Xcode non sia provare e creare stub Objective-C per quelle classi Swift in quanto non ne ho effettivamente bisogno?

risposta

5

Ho avuto lo stesso problema e ha scoperto che ..

-Swift.h solo lavorare al meglio con Objective-C, non Objective-C++ (.mm)

Così ho utilizzare la classe Objective-C per connettersi con la classe Swift. Inoltre puoi sempre caricare la tua classe Objective-C++ nella tua classe Objective-C.

+0

Sto riscontrando questo problema con CoreData :( – pojomx

+0

per CoreData, utilizzo l'Objective C per gestire la classe del modello CoreData. Sentiti libero di guardare la mia app di database di esempio su github [Link SweeneyApps su Github] (https: // github.com/sweeneyapps/coredataSwiftExample) –

1

Provare a importare UIKit/UIKit.h nel file di intestazione del bridging.

+1

Per me non è stato di aiuto importare 'UIKit/UIKit.h' in' Project-Swift.h', ma farlo nel mio vero file di intestazione Objective C ha fatto il trucco. –

+0

Huh, questo ha funzionato per me! '#import" UIKit/UIKit.h "' – Amy

+0

Se non funziona Provate a importare UIKit/UIKit.h nel file di intestazione del bridging –

4

Basta aggiungere

#import <UIKit/UIKit.h> 

prima

#import <YourProject-Swift.h> 

nel file di .mm. per me aiuta.

+0

Grazie mille! Questa è l'unica soluzione che ha funzionato per me. – tuttu47