Die Datei ModuleName-Swift.h wurde in xcode8 nicht gefunden

Ich versuche, die Arbeit auf eine gemischte Swift und ObjectiveC Projekt mit kein Glück.

Mein Projekt besteht aus 6 Ziele:

  • App
  • Core
  • CoreTest
  • Zusammenfassung
  • WatchKit Extension
  • WatchKit App

Ich habe in der Lage, fügen Sie eine Swift-Klasse, hat ein Ziel-Mitgliedschaft (App) und verwendet ObjectiveC-code, indem Sie von den App-Bridging-Header.h
Die "ObjectiveC in Swift-code" - Paradigma funktioniert wie ein Charme.

Statt, ich habe Mühe mit dem "Swift in ObjectiveC-code" - Paradigma.
In dem speziellen Fall brauche ich eine neue Swift-Klasse in ein ObjectiveC .m-Datei, ist Mitglied von vier Ziele.

Was ich getan habe, so weit ist diese:

  1. Hinzufügen eines neuen Swift-Datei in das Core-Projekt der Angabe der vier Mitgliedschaften (App, Core, Zusammenfassung, WatchKit Extern)
  2. XCode fragt, zu erstellen -Bridging-Header.h für drei Projekte Core, Zusammenfassung und WatchKit Extern (App-Bridging-Header.h ist bereits vorhanden, da es bereits verwendet wurde), und ich willige ein (weiß nicht, warum es erstellt die Dateien innerhalb der gleichen Gruppe Ordner, wo ich meine Swift Klasse, aber nevermind)
  3. Ich erstellen, die der Swift-Klasse hinzufügen, die @objc - Taste, bevor Klasse
  4. Gehe ich prüfen, ob Objective-C Erzeugt-Interface-Header-Namen für alle Module, und ja, es ist
  5. Gehe ich prüfen, ob Definiert Modul eingestellt ist Keine in allen Modulen und zu ja in der Haupt-Projekt, und ja, es ist
  6. Schreibe ich den Einfuhren für die -Swift.h Dateien für alle vier Ziele
  7. In meinem Objective-C-Klasse-ich versuche, mit meinem neuen Swift-Klasse, offenbar scheint es zu funktionieren (sogar autocompletion)
  8. Ich versuchen, das Projekt erstellen, aber es funktioniert nicht sagen, dass die -Swift.h Datei nicht gefunden

Habe ich folgte die Mix und Match-guide von Apple und SO viele threads, einschließlich diese eine , scheint offenbar zu Adresse das gleiche problem von mir aber es funktioniert nicht.

Haben auch gesehen diese und diese aber hat nicht funktioniert.

Haben auch versucht zu Löschen, Abgeleitete Daten, sowie die Reinigung des gesamten Projekts mehrmals mit kein Glück.

EDIT 1 : Weitere details

Dies ist die Erklärung von meinem Swift Klasse
import RealmSwift

@objc class MyClass: Object {}

Dies ist die snippet-Nutzung der Swift-Klasse in ObjectiveC

MyClass *app = [[MyClass alloc] init];

Wenn ich vermeiden Sie die Verwendung von #import ...-Swift.h der build fehlschlägt sagen, dass ich die Verwendung eines nicht Deklarierten idenfier "MyClass" und das ist sound.

Wenn ich #import ...-Swift.h-Dateien, die es sagt, dass Modul X nicht finden kann-Modul Y und so weiter.

EDIT 2 : Swift-Modul name

Durch die Betrachtung der SWIFT_OBJC_INTERFACE_HEADER_NAME Eigenschaft jedes Ziel hab ich gesehen, dass es gebaut ist die Verwendung dieser syntax $(SWIFT_MODULE_NAME)-Swift.h muss ich ändern, SWIFT_MODULE_NAME zu MODULNAME?

EDIT 3 : Importe

Dies ist die Menge der Importe für Swift-Header .m ObjectiveC-Datei.
Ich bin mit dem Modulnamen angegeben in relativen Build-Einstellungen Eigenschaften. Beachten Sie, dass jeder ' _ ' - Zeichen, da WatchKit Extension target ein Leerzeichen im Zielnamen.

#import "ProjectName_App-Swift.h"
#import "ProjectName_Core-Swift.h"
#import "ProjectName_Summary-Swift.h"
#import "ProjectName_WatchKit_Extension-Swift.h"

EDIT 4 : Cross-Sichtbarkeit -Swift.h-Dateien

Ich habe tryed die folgenden:

  • Hinzugefügt Swift-Klasse nur in der Ziel-App
  • XCode erstellt die Bridging-Header
  • Eingefügt #import "ProjectName_App-Swift.h" in ObjectiveC-Datei verwendet, nur durch die App
  • Gemacht Verwendung von Swift-Klasse in dieser Datei
  • Es kompiliert! Und ich bin in der Lage, verwenden Sie die Swift-Klasse

Wenn der Swift-Klasse definiert ist, für mehrere Ziele und ObjectiveC-Datei verwendet, von denen mehrere Ziele funktioniert es nicht. Die build-Fehler sind wie diese: Target X -> "ProjectName_TargetY-Swift.h" Datei nicht gefunden.
Scheint wie ein Ziel nicht sehen können, andere Ziele -Swift.h-Dateien.

Was mache ich falsch?
Vielen Dank für Ihre Hilfe

Kommentar zu dem Problem
Bearbeiten können Sie die Art und Weise, die Sie importieren, das Swift-generierte header? Kommentarautor: Sealos
@Sealos Hinzugefügt Importe zur ursprünglichen Frage Kommentarautor: LucioB
Ich glaube, du ' re fehlt den Projektnamen in die Kopfzeile importieren. Würden Sie bitte überprüfen? Wie diese: "Project_name_WatchKit_Extension-Swift.h" Auch, Sie könnten überprüfen, welches Modul die Datei wird dabei SomeClass.classForKeyedUnarchiver in einer swift-Datei und bekommen. Kommentarautor: Sealos
Ich glaube, was Sie sagen, es ist wahr, können Sie nicht importieren andere Ziel-swift-Importe in ein anderes Ziel. Was Sie tun müssen, ist fügen Sie die Swift-Datei an die Ziel-Mitgliedschaft (Wie dieses: i.stack.imgur.com/v3Z0A.jpg). Das sollte lösen Ihr Problem! Kommentarautor: Sealos
@Sealos Danke, ich habe das problem gefunden, es war in Bezug auf das, was ich herausgefunden habe im edit 4 ich habe zunächst versucht, Ihre Lösung, aber es hat nicht funktioniert. Aber vielen Dank für die Hilfe Kommentarautor: LucioB

InformationsquelleAutor der Frage LucioB | 2016-11-08

Schreibe einen Kommentar