2015-07-07 23 views
18

Ho avuto un progetto pulito e veloce, utilizzando alcuni cocoapod: Parse, AFNetworking e RESIDEMenu. ho bisogno di usare STZPopupView pod, così ho aggiornato cocoapods con l'ultima versione:utilizzando cocoapods "use_frameworks!" SWIFT

gem install cocoapods 

Poi ho rilanciato per il mio progetto:

pod install 

A causa di questo errore:

[!] 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. 

Ho aggiornato il mio podfile aggiungendo "use_frameworks!"

mio podfile è ora:

# 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 

Dal momento che, ho 2 errori quando ho costruire:

  • file "RESideMenu.h" non trovato
  • Impossibile importare intestazione colmare". .../isam/Swift-Bridging-Header.h "

Non ho cambiato nient'altro nel mio progetto.

mio Swift-Bridging-header.h non cambia:

#ifndef isam_Swift_Bridging_Header_h 
#define isam_Swift_Bridging_Header_h 

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

#endif 

Nelle mie impostazioni di generazione, ho:

builds settings

penso che sia a causa di "use_frameworks!" nel mio podfile, ma non so come fare per usare tutti i miei pod per costruire correttamente la mia app.

EDIT:

Gli errori esatte sono:

/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

Rimuovere queste istruzioni dal file di intestazione del bridging: #ifndef isam_Swift_Bridging_Header_h & #define isam_Swift_Bridging_Header_h e endif. Dovrebbe funzionare. – iDilip

+0

@ dilip.ajm #ifndef impedisce semplicemente di essere importato più volte per quanto posso dire –

+0

@SantaClaus Ho provato con e senza virgolette, ma non funziona – cmii

risposta

16

Sono effettivamente sullo stesso problema. Si può provare questo: http://www.innerexception.com/2015/05/cocoapods-useframeworks-means-bridging.html

Quando si utilizza use_frameworks! in CocoaPods tutti i tuoi pod verranno utilizzati come framework, non solo i pod rapidi. Quindi non hai bisogno di un'intestazione di bridging per questo. Importa i tuoi pod in tutti i file rapidi di cui hai bisogno. Nel tuo esempio devi scrivere: import RESideMenu

+0

Questo problema è stato risolto per me, tuttavia ho ottenuto anche una "duplicazione della dichiarazione dell'interfaccia" che ho risolto modificando i file Objective-C che stavano importando le intestazioni dai framework in uso globale invece di local: '#import" Framework.h "' a '#import '. –

2

Provare a rimuovere ISAM/per l'Objective-C Bridging Header e hanno solo Swift-Bridging-header.h

Venendo da personale esperienza, CocoaPods ha ancora alcuni problemi quando si combinano i framework swift e Objective C. Puoi usare Alamofire che è quasi equivalente a AFNetworking per swift.

Spero che questo aiuti.

Modifica: Anche perché utilizzare Objectice-C Parse in rapido quando è possibile utilizzare direttamente le librerie swift.

+0

Rimuovi isam/non funziona. Infatti, ho bisogno del pod STZPopupView perché vorrei personalizzare il controller uialert: http://stackoverflow.com/questions/31254931/add-an-animation-image-per-image-inside-a-uialertcontroller-swift – cmii

+0

ok I è stato in grado di costruire con successo il progetto usando le tue specifiche. è stata modificata solo per modificare questo #import Prova anche a rimuovere l'obiettivo "isam" dal file del pod e assicurati di eseguire tutti i comandi del pod terminal all'interno della directory del progetto – mosn

+0

quando hai detto "rimuovere l'isam target", mi chiedi di rimuovere completamente la riga "target" isam "do"/"end" nel mio podfile? – cmii

1

Ho avuto lo stesso problema.Ad esempio, ho modificato tutte le mie importazioni da #import "RESideMenu.h" a #import <RESideMenu/RESideMenu.h>.

Problemi correlati