2015-02-26 11 views
11

I 'ha avvolto la mia biblioteca privata in cocoapods. Ha dipendenza da ReactiveCocoa.Cocoapods: definizione interfaccia duplicata

s.name = 'MineLibrary' 
s.dependency 'ReactiveCocoa/Core' 
s.source_files = 'Source/*.{h,m,swift}' 
.... 

Alcuni file di intestazione contiene:

#import <ReactiveCocoa/RACSignal.h> 

ho includerlo in un nuovo progetto:

use_frameworks! 
.... 
pod 'ReactiveCocoa' 
pod 'MineLibrary', :git => '[email protected]' 

Ma quando ho compilare progetto sto ottenendo un errore:

duplicate interface definition for class 'RACStream' 
duplicate interface definition for class 'RACSignal' 


/Users/USER/Library/Developer/Xcode/DerivedData/Project-emcwpmbbuimotuftzijeemvngrvj/Build/Products/Debug-iphoneos/Pods/ReactiveCocoa.framework/Headers/RACStream.h:27:1: error: duplicate interface definition for class 'RACStream' 

@interface RACStream : NSObject 
^ 
/Users/USER/Workspace/Project/Pods/ReactiveCocoa/ReactiveCocoa/RACStream.h:27:12: note: previous definition is here 
@interface RACStream : NSObject 

Come può essere risolto?
P.S. Sto usando cocoapods 0.36.0.rc.1

risposta

1

Hai provato ad aggiornare all'ultima versione di CocoaPods? Ho notato che hai accennato al fatto che stai utilizzando un candidato di rilascio obsoleto, che potrebbe essere in errore qui.

In generale, ecco cosa devi fare quando si crea e si utilizza un CocoaPod nella vostra applicazione:

1) Nella tua CocoaPod, dichiarare tutte le dipendenze nelle specifiche pod, utilizzando s.dependency per ogni

2) Nella tua app, usa CocoaPods per gestire tutte le dipendenze dell'app. Vale a dire, non manualmente trascinare le librerie nella tua app. Se lo fai, rischi di creare classi duplicate con quelle che includi nel drag and drop.

3) Sia nell'app che nel CocoaPod, dipendono dalle versioni flessibili possibili. In generale, dovresti almeno consentire aggiornamenti minori della versione, ad es. pod 'PodName', '~> 1.0.0'.

4) Nel file pod della tua app, specifica un target per la tua app e il tuo target di test unitario, ad es.

target "MyApp" do 
    # App pods... 
end 

target "MyAppTests", :exclusive => true do 
    # Test pods... 
end 

Se si dispone di più di due obiettivi, specificare un obiettivo per ciascuno. O, per lo meno, specificare un obiettivo diverso per i test unitari, che verrà iniettato nell'app.

+0

Purtroppo non mi ricordo come problema è stato risolto, potrebbe essere in realtà era dovuto alla versione cocoapods. Dopo non ho più avuto questo problema. – Mikhail

22

Ho avuto questo problema qualche tempo fa, qualcuno ha importato un'intestazione cocoapod in modo errato. Assicurati di usare la notazione della parentesi, E.G. piuttosto che: #import "theUsefulClass.h" si dovrebbe utilizzare: #import <thePod/theUsefulClass.h>