2015-06-26 15 views
43

Quindi, ecco la mia procedura. Creo un nuovo Podfile nella directory del progetto, poi ho aggiunto il seguente'Nessun modulo' quando utilizzo CocoaPods

platform :ios, '9.0' 
use_frameworks! 

target 'CPod' do 
pod 'AFNetworking', '~> 2.5' 
pod 'ORStackView', '~> 2.0' 
pod 'SwiftyJSON', '~> 2.1' 
end 

I fuoco fuori pod install, e tutto va bene, apro il xcworkspace. Passo quindi a ViewController.swift e se provo a importare un pod ottengo No such module 'SwiftyJSON', se dovessi fare import SwiftyJSON. Qualche idea?

EDIT: SwiftyJSON è un modulo basato Swift, non Obj-C

+0

possibile duplicato di [Swift: Non è possibile utilizzare libreria da file Pod] (http://stackoverflow.com/questions/26412122/swift-cannot-use-library-from-pod-file) – Rugmangathan

+0

Questo sarebbe il caso di "AFNetworking", ma questa è una storia diversa. 'SwiftyJSON' è una libreria Swift, quindi quel post non risponde alla domanda. @Rugmangathan – Idris

+0

quale versione di cocoapods stai usando? –

risposta

-5

Per utilizzare Swift in Objective-C, è necessario importare un file di intestazione che Xcode genera automaticamente in fase di compilazione (NomeDelModulo + Swift.h). In questo caso, si dovrebbe cercare di importazione SwifityJSON in voi intestazione del file in questo modo:

#import "SwiftyJSON-Swift.h" 
+2

'use_frameworks!' Non è necessario importare l'intestazione 'Obj-C', si importa il modulo, anche l'OP sta usando rapido dove vedi la necessità di importare in 'Obj-C'? – sbarow

9

Press Command + Option + Maiusc + K e poi Run vostra applicazione, vedrete una magia.

Oppure dal menu -> Prodotto, premi Option sulla tastiera e vedrai Clean Build Folder.

Sembra strano che Xcode possa fare queste cose con noi, ma è successo a me stesso quando ho usato una libreria Swift usando Pod e dopo troppa fatica ho finito con Clean Build Folder.

+0

Di tutte le centinaia di soluzioni disponibili per l'errore "Nessun modulo di questo tipo" dopo l'installazione dei pod in un progetto Xcode, questo è l'unico che funziona effettivamente per me. +1. – instanceof

58

Provate ad aggiungere il framework Pods allo schema di build e alla costruzione del framework. Dopo averlo creato, crea/esegui il tuo progetto.

Passi:

  1. menu Schema> Gestisci Schemi> controllare Pods> Chiudi (Image 1, Image 2)
  2. Selezionare Pods dal menu schema.
  3. Build Pods.
  4. Seleziona il tuo progetto dallo stesso menu, quindi compila/eseguilo.
7

Si può anche provare nuovamente l'installazione di baccelli con:

pod deintegrate 

e poi

pod install 

Questo ha risolto questo problema per me

7

È necessario riaprire il file .xcworkspace di progetto (not .xcodeproj) dopo aver installato il tuo podfile.

  1. Clone repo con CocoaPods
  2. aperto YourWorkspace/YourApplication.xcworkspace
  3. Seleziona l'app u desidera eseguire Aggiungi SwiftyJSON.quadro incorporati binari per quel progetto Hit Esegui

Felice Coding :)

0

succede A volte, quando si dispone di un obj-c pod all'interno di un rapido progetto (anche quando si utilizza il use_frameworks! in il .podfile).

Se sei sicuro del pod è installato e si sta ancora ricevendo Nessun tale modulo, provate questo:

  • Vai a Pods progetto in Xcode
  • Pods
  • Fare clic con il tasto destro del mouse sull'impatto pod
  • Mostra nel Finder

Ci dovrebbe essere un file pacchetto con .framework suffisso. Creare una cartella Moduli in esso. In questa cartella creare un file chiamato module.modulemap con il codice:

framework module MODULE_NAME_HERE { 
    umbrella header "MODULE_NAME_HERE.h" 

    export * 
    module * { export * } 

    link framework LINKED_FRAMEWORKS_AND_LIBRARIES_THE_POD_NEEDS_HERE 
    link framework "AdSupport" 
    link "c++" 
    link "z" 
} 

Ricostruire e si dovrebbe essere ok.

3

Non so se questo sarebbe ancora utile per gli altri. Ma, nel mio caso, si è trattato di uno stupido errore di non riferirsi alle dipendenze dal file .podspec.

Abbiamo un'applicazione con più librerie interne, e quelle librerie hanno anche dipendenze l'una dall'altra - che abbiamo rappresentato per i file Pod ... ma NON per le podspec.

Così, anche se i nostri Podfiles avevano:

Applicazione/Podfile

# Development Pods 
pod 'ConsumingLibrary ', :path => '../ios-consuming-lib' 
pod 'DependentLibrary1', :path => '../ios-library-one' 
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib' 

ConsumingLibrary/Podfile

# Development Pods 
pod 'DependentLibrary1', :path => '../ios-library-one' 
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib' 

bisogno di chiamare anche nelle .podspec di :

ConsumingLibrary/ConsumingLibrary.podspec

# TODO 
    # Add here any resources to be exported. 

    s.dependency 'DependentLibrary1', '~> 0.1.0-RC' 

DependentLibrary1/DependentLibrary1.podspec

# TODO 
    # Add here any resources to be exported. 

    s.dependency 'CommonCoreLibrary', '~> 0.1.0-RC' 

Credo sprecato circa 2 ore a cercare di capire il motivo per cui ho potuto costruire ConsumingLibrary & eseguire i test, ma non appena ho costruito l'applicazione, che ha consumato tutte le tre biblioteche - ho continuato a ottenere:

Nessuna tale modulo 'DependentLibrary1'

0

Aggiunta di collegamento "C++" nel file quadro module.modulemap ha lavorato per me

0

Provare a utilizzare aggiornamento pod dopo il comando di installazione pod che risolverà il problema di Nessun modulo. Ho appena provato e funziona bene.

Grazie, Ratneshwar