2015-07-07 5 views
18

Ich hatte ein sauberes schnelles Projekt mit einigen Cocoapoden: Parse, AFNetworking und RESideMenu. Ich brauche STZPopupView pod zu verwenden, so dass ich cocoapods mit der letzten Version aktualisiert:Fehler bei der Verwendung von Cocoapoden "use_frameworks!" SWIFT

gem install cocoapods 

Dann relauncht ich es für mein Projekt:

pod install 

Aufgrund dieses Fehlers:

[!] Pods written in Swift can only be integrated as frameworks; this feature is still in beta. Add `use_frameworks!` to your Podfile or target to opt into using it. 

Ich habe meine Poddatei mit "use_frameworks!"

Mein podfile ist jetzt:

# Uncomment this line to define a global platform for your project 
# platform :ios, '8.0' 
use_frameworks! 

source 'https://github.com/CocoaPods/Specs.git' 

target 'isam' do 
pod 'RESideMenu', '~> 4.0.7' 
pod 'AFNetworking', '~> 2.5' 
pod 'Parse', '~> 1.6' 
pod 'STZPopupView', '~> 1.0' 
end 

target 'isamTests' do 

end 

Da ich zwei Fehler, wenn ich bauen:

  • "RESideMenu.h" Datei nicht
  • Überbrückung Header konnte nicht gefunden importieren“. .../isam/Swift-Bridging-Header.h "

Ich habe nichts anderes in meinem Projekt geändert.

Mein Swift-Bridging-header.h nicht ändert:

#ifndef isam_Swift_Bridging_Header_h 
#define isam_Swift_Bridging_Header_h 

#import <Parse/Parse.h> 
#import <RESideMenu.h> 

#endif 

In meinen Build-Einstellungen, die ich habe:

builds settings

Ich denke, es ist wegen "use_frameworks!" in meinem Podfile, aber ich weiß nicht, wie ich alle meine Pods verwenden soll, um meine App korrekt zu erstellen.

EDIT:

Die genauen Fehler sind:

/path_of_my_project/Swift-Bridging-Header.h:12:9: error: 'RESideMenu.h' file not found 
#import <RESideMenu.h> 
     ^
<unknown>:0: error: failed to import bridging header '/path_of_my_project/Swift-Bridging-Header.h' 
+0

Entfernen Sie diese Anweisungen aus der Bridging-Headerdatei: #ifndef isam_Swift_Bridging_Header_h & #define isam_Swift_Bridging_Header_h und endif. Es sollte funktionieren. – iDilip

+0

@ dilip.ajm Das #ifndef hält es einfach davon ab, mehrmals importiert zu werden, soweit ich das beurteilen kann –

+0

@SantaClaus Ich probierte es mit und ohne Anführungszeichen, aber es funktioniert nicht – cmii

Antwort

16

Ich bin eigentlich auf das gleiche Problem. Sie könnten dies versuchen: http://www.innerexception.com/2015/05/cocoapods-useframeworks-means-bridging.html

Bei der Verwendung von use_frameworks! In CocoaPods werden alle Ihre Pods als Frameworks verwendet, nicht nur die schnellen Pods. Sie benötigen dafür keinen Bridging-Header. Importieren Sie Ihre Pods einfach in alle benötigten Swift-Dateien. In Ihrem Beispiel müssen Sie schreiben: importieren RESideMenu

+0

Dies hat es für mich behoben, aber ich habe auch eine "duplication of interface declaration" bekommen, die ich durch Ändern meiner Objective-C-Dateien, die Header aus Frameworks importieren, in globale Includes änderte anstelle von local: '#import" Framework.h "' zu '#import '. –

2

Versuchen isam/von dem Objective-C Bridging-Header und haben nur Swift-Bridging-header.h

aus persönlichen kommend Entfernen Erfahrung, CocoaPods haben immer noch einige Probleme bei der Kombination von schnellen und Objective-C-Frameworks. Sie können Alamofire verwenden, das fast gleichwertig zu AFNetworking ist.

Hoffe, das hilft.

Bearbeiten: Verwenden Sie auch Objectice-C Parse in Swift, wenn Sie Swift-Bibliotheken direkt verwenden können.

+0

Isam entfernen/funktioniert nicht. In der Tat, ich brauche die Pod STZPopupView, weil ich gerne die Uialertcontroller: http://stackoverflow.com/questions/31254931/add-ananimation-image-per-image-inside-a-uialertcontroller-swift – cmii

+0

ok ich war in der Lage, das Projekt unter Verwendung Ihrer Spezifikation erfolgreich zu erstellen. einzige, was ich brauchte, war zu ändern, um diese #import ändern auch versuchen Ziel ‚ISAM‘ Entfernen Sie aus Ihrer pod-Datei und stellen Sie sicher, dass alle pod Terminal-Befehle innerhalb des Projektverzeichnis laufen – mosn

+0

wenn du "remove the target isam" sagst, bittest du mich, die Zeile "target 'isam' do"/"end" in meinem podfile komplett zu entfernen? – cmii

1

Ich hatte das gleiche Problem.Ich habe alle meine Importe von #import "RESideMenu.h" zu #import <RESideMenu/RESideMenu.h> zum Beispiel geändert.

Verwandte Themen