2015-02-03 8 views
11

Quindi sto lavorando a un progetto iOS che contiene classi Swift e Objective-C.Mixing Swift e Objective C: file "ProjectName-Swift.h" non trovato

Per istanziare un oggetto descritto in Objective-C, ho capito che avevo bisogno di avere un file Bridging-Header che contenga tutte le importazioni delle intestazioni che dovrò usare sulle mie classi Swift. E funziona benissimo sul mio progetto. Ho creato tutte le classi necessarie, ho suddiviso le classi Objective-C in Swift, tutto è OK.

Il mio problema è quando si tratta di fare il contrario: istanziare un oggetto rapido in un file Objective-C. Così ho letto che ho bisogno di avere queste opzioni:

  • Definire moduli come
  • aggiungere la riga #import "<#YourProjectName#>-Swift.h" sul file .m * su cui sto lavorando.

E questo è quello che ho fatto:

ho cambiato tutti i valori sulle impostazioni di generazione che doveva essere cambiato. Ho aggiunto la riga import, ho anche provato a creare il file di intestazione, ma ho ancora l'errore "<#YourProjectName#>-Swift.h" file not found.

Naturalmente, ho sostituito il YourProjectName dal nome del modulo attuale, quella che ho trovato sotto Modulo Prodotto Nome in Packaging sezione Impostazioni costruire. Inoltre, non ci sono spazi nel nome del progetto.

Ho dimenticato un passaggio?

Grazie per il vostro aiuto.

+0

Ho eseguito un esempio di questa #import "<#YourProjectName #> - Swift.h viene sostituito con il mio nome progetto sample1 come #import" sample1-Swift.h ". – Sulabh

+0

Un'ultima cosa, ho già un bridging intestazione nel mio progetto – Sulabh

risposta

7

Assicurarsi di importare il file -Swift.h da un file .m Objective-C e non un file di intestazione .h. L'docs solo parlare di importazione da .m:

... importare il file di intestazione Xcode-generato per il codice Swift in qualsiasi Objective-C .m file che si desidera utilizzare il codice Swift dal.

Il file -Swift.h viene generato durante la costruzione e ho trovato che l'importazione da un file .h fallisce sempre, anche quando so che il file esiste. Dato che è generato dalla build, suppongo che venga ripulito quando il compilatore sta setacciando le intestazioni e rigenerato una volta compilati i file .swift.

+0

Posso fare in modo che questo funzioni nei file di intestazione o aggirare questo problema? Devo impostare una proprietà da Swift su un oggetto Objective-C che è un tipo Swift - se ciò ha ancora senso. – jeroen

+0

I don capisco cosa intendi per "oggetto Objective-C che è un tipo Swift". I tipi Swift non possono essere estesi in Objective-C. – phatblat

+0

quindi @phatblat quello che stai dicendo è se creo una classe in una veloce 'classe @objc Object' Non posso usarlo come una proprietà su un file di intestazione della classe obj-c? – YichenBman

Problemi correlati