2015-09-07 13 views
8

Il mio progetto corrente contiene sia il codice Swift che il codice Objective-C. Entrambi i tipi di file sorgente utilizzano il codice dell'altro linguaggio. Quando faccio una pulizia completa e ricompilare, ottengo errori in quasi ogni singola dichiarazione della classe Swift in Module-Swift.h, della forma:'Impossibile trovare la dichiarazione dell'interfaccia' nell'intestazione del collegamento rapido Swift generata automaticamente

Cannot find interface declaration for 'UIViewController', superclass of 'CustomViewController' 

I miei sintomi sono simili a this question, in circostanze analoghe a this question. In altre parole:

  • Module-Bridging_Header.h importa mio header Objective-C, Class.h
  • Il file di implementazione Class.m importa l'intestazione Swift, Module-Swift.h

Se seguo l'approccio nei ansewrs per this question, I può risolvere l'errore aggiungendo il seguente file e importandolo al posto di Module-Swift.h:

// 
// Module-Swift-Fixed.h 
// Module 
// 

#ifndef Module_Swift_Fixed_h 
#define Module_Swift_Fixed_h 

#import <Foundation/Foundation.h> 

#import <CoreData/CoreData.h> 
#import <UIKit/UIKit.h> 

#import "Module-Swift.h" 

#endif /* Module_Swift_Fixed_h */ 

Questo sembra un orribile hack. Mi manca un modo corretto per ottenere questo in Xcode?

+0

Sei in Swift 2.0? Non sembra essere un problema con Xcode 7. Se lo sei, puoi pubblicare il progetto? – SwiftArchitect

+1

Ho avuto un problema simile. La mia (leggermente migliore?) Hack è stata quella di aggiungere l'importazione mancante all'intestazione del bridging. –

risposta

0

Nei file Obj-C, è necessario importare il modulo swift (con #import "Module-Swift.h").

Effettuare questa operazione solo nei file in cui verranno utilizzati i tipi definiti nel modulo Swift.

Problemi correlati