2016-07-28 24 views
2

Das ist wirklich frustrierend. Ich habe die Braintree-Bibliothek in mehrere iOS-Projekte integriert, bevor sie in swift verwendet wurde und nie wirklich ein Problem hatte, aber momentan kann ich es nicht zum Laufen bringen.Warum ist meine einfache Aufgabe c bridging header nicht in der Lage, die Datei "BraintreeCore.h" zu finden?

ich gefolgt/wiederholt, um die hier über Anweisungen und über:

https://developers.braintreepayments.com/start/hello-client/ios/v4

Insbesondere i setzen pod 'Braintree' in meinem Podfile, lief hat eine pod installieren und pod aktualisieren und das Braintree überprüft Bibliothek erscheint jetzt im Pods-Verzeichnis.

Ich habe meine Bridging-Header jetzt auch 3 mal gemacht, vorsichtig sein, das Ziel auf meine App zu setzen. Ich habe auch immer wieder überprüft, dass ich den objektiven c-Überbrückungsheader in meinen Build-Einstellungen auf die richtige Datei gesetzt habe und es erfolgreich überbrückende Header für andere objektive c-Dateien erstellt habe. Leider aber die folgenden Zeilen sind einfach nicht in dem Brückenkopf arbeiten:

#import "BraintreeCore.h" 
#import "BraintreeUI.h" 

Beide geben einen Compiler-Fehler von der gleichen Art, sagten BraintreeCore.h Datei nicht gefunden.

konnte ich folgendes tun, ohne einen Fehler zu bekommen:

#import "Pods/Braintree/BraintreeCore/Public/BraintreeCore.h" 

Aber wenn ich versuche, und das Gleiche tun für BraintreeUI.h wie so:

#import "Pods/Braintree/BraintreeUI/Public/BraintreeUI.h" 

Es verbindet mich die

#import <BraintreeCore/BraintreeCore.h> 
: BraintreeUI.h Datei und sagt mir "BraintreeCore/BraintreeCore.h" Datei nicht über diese Linie in der BraintreeUI.h Datei gefunden 210

Was mache ich falsch ?? Das sollte einfach sein, aber es ärgert mich seit über 12 Stunden.

Antwort

3

Volle Offenlegung: Ich arbeite bei Braintree auf dem iOS SDK.

Ihr Bridging-Header sollte nicht benötigen Sie einen Pfad zu den Regenschirm-Header-Dateien angeben. Dies kann darauf hinweisen, dass die Build-Konfiguration Ihres Xcode-Projekts so eingerichtet ist, dass das Build-System von Xcode die Header-Dateien nicht finden kann. In einem typischen Projekt sollten Sie dies problemlos tun können.

Mein Vorschlag, einen genauen Blick auf das Projekt>Build-Einstellungen>Suchpfade Einstellungen zu nehmen wäre. Insbesondere sollte die Header-Suchpfade Einstellung einen Eintrag enthält, der wie folgt aussieht:

"${PODS_ROOT}/Headers/Public/Braintree"

Wenn nicht, ich vermute, dass CocoaPods mit Ihrem Xcode-Projekt nicht schön spielen. Sie können versuchen, De-Integration und Re-Integration. Mit CocoaPods 1.0 sollten Sie in der Lage sein, pod deintegrate zu tun, stellen Sie sicher, dass Ihr Ordner Pods/ gelöscht ist, und führen Sie pod install. Worst Case Möglichkeit, möchten Sie vielleicht nur mit einem brandneuen Xcode-Projekt beginnen und über Ihre alten Quelldateien ziehen (obwohl das ein großer Schmerz sein könnte).

0

Haben Sie eine Lösung gefunden, HelloCoding? Mit dem gleichen Problem konfrontiert ...

In meinem Fall bemerkte ich, dass die Braintree-Dokumentation sagt: "Wenn Ihre App in Swift geschrieben ist, aber Ihre CocoaPods-Integration keine dynamischen Frameworks verwendet, können Sie Braintree in einen Bridging-Header importieren".

Also löschte ich die Importe aus der Bridge-Datei und enthielt ein "use_frameworks!" Anweisung in meinem Podfile stattdessen.

Ich habe keine Ahnung, ob dies der bewährte Weg ist, das Problem zu beheben, aber es schien für mich zu funktionieren.