2015-07-22 12 views
5

Ich versuche eine Methode einer NSObject Unterklasse aufzurufen, die ich im Projekt "main" innerhalb einer Methode einer XCTestCase Unterklasse im Testprojekt habe. Die Unterklasse NSObject des Hauptprojekts importiert die Header-Datei "XXX-Swift.h" (ich mische und Objective-C Code). Alles funktioniert gut, wenn ich das Hauptprojekt ausführe, aber wenn ich die Tests aufrufe, die ein Objekt dieser Unterklasse aufrufen, erhalte ich einen Fehler, der besagt, dass die Header-Datei Swift im Import nicht gefunden wird.Datei "XXX-Swift.h" im Testprojekt nicht gefunden

Ich denke, ich vermisse einige Einstellungen im Testziel, aber ich finde nicht welche ... was soll ich überprüfen? Oder was soll ich tun, um das zu lösen?

Antwort

10

Zum Xcode Projekt> Einstellungen Erstellen und „Headernamen“ eingeben, erhalten Sie die folgende Option erhalten:

enter image description here

Vergewissern Sie sich, dass es eine Datei mit einem Namen bestehen muss: $(SWIFT_MODULE_NAME)-Swift.h

Geben Sie dann unter Build-Einstellungen "bridging header" ein und stellen Sie sicher, dass der Pfad der Datei "bridging-header.h" korrekt vorhanden ist.

enter image description here

Edited:

1) Stellen Sie sicher, dass Ihr "Projektname" enthält keine Leerzeichen 2) Well "XXX-Swift.h" Datei unter folgendem Pfad erzeugt wird, so Sie müssen diesen Weg zu Unit-Test hinzufügen - Go-Einstellungen zu erstellen, geben Sie „Header-Suchpfade“ und fügen Sie die folgende Zeile

"$(TARGET_TEMP_DIR)/../$(PROJECT_NAME).build/DerivedSources" 

Für weitere Informationen, Sie auf diesen Link verweisen: iOS - 'MyProject-Swift.h' file not found when running Unit Tests for Swift

+0

Ich habe diese Einstellungen bereits im App-Ziel, und ich habe 'Embedded Content Enthält Swift-Code' im Testziel auf JA gesetzt, funktioniert aber immer noch, wenn ich die App starte, bekomme aber den Fehler beim Ausführen der Tests ... – AppsDev

+0

@AppsDev siehe bitte die bearbeitete Antwort –

+0

Ich bekomme immer noch den Fehler ... Wie könnte ich den Wert von $ (TARGET_TEMP_DIR) sehen? – AppsDev