Il modulo compilato con swift 3.0 non può essere importato in Swift 3.0.1

Ho aggiornato Xcode a 8.1 GM e ora sto ottenendo l’errore sotto per SwiftyJSON. Altre strutture importate sembrano funzionare. C’è un modo per forzare questo a lavorare in Swift 3 fino a quando SwiftyJSON aggiorna il loro framework? Ho usato Carthage per importare / aggiornare i framework. Ho anche provato a cambiare la versione in Use Legacy Swift language version On e Off senza alcun risultato.

Il modulo compilato con Swift 3.0 non può essere importato in Swift 3.0.1: Modules / SwiftyJSON.swiftmodule / arm64.swiftmodule

SwiftyJson viene scaricato precompilato da carthage. Il download precompilato è con Swift versione 3.0. Questo fa sì che il compilatore si lamenta che la versione non è corretta. Utilizzando il seguente comando:

 carthage update --platform iOS --no-use-binaries 

SwiftyJson (e tutti gli altri framework all’interno di Cartagine) saranno compilati localmente usando la versione locale di Swift (3.0.1) e il compilatore non si lamenterà più.

Rimuovi la chache dell’app da DerivedData e ricompila. l’errore potrebbe essere corretto.

Il percorso DerivedData come questo:

 ~/Library/Developer/Xcode/DerivedData/ 

Assicurati di aver inserito il nuovo pacchetto XCode 8.1 GM nella cartella Applicazioni. Ci siamo imbattuti in questo problema quando uno di noi gestiva Carthage per aggiornare le nostre dipendenze, ma non aveva sostituito l’applicazione vecchia di XCode 8.0 nella cartella delle applicazioni (8.1 GM stava scappando dal desktop).

Vuoi assicurarti che quando esegui quanto segue nel terminale: xcrun swift -version restituisca la Apple Swift version 3.0.1 .

L’aggiornamento di Xcode predefinito a quello nuovo sul terminale ha funzionato per me.

Passo 1: Usa il seguente comando per aggiornare la versione di Xcode alla più recente su Terminale. arbitro

 sudo xcode-select -switch Xcode.app 

Passo 2: Ora prova il comando di aggiornamento carthage

 carthage update --platform iOS 

Solo per dare gli ultimi aggiornamenti:

Carthage ha rilasciato la versione 0.20 il 27 febbraio 2017.

Carthage ora usa solo il binario pre-build se il binario pre-build disponibile è compatibile .

Detto questo, non è più necessario utilizzare: --no-use-binaries per evitare un framework di pre-build incompatibile.

Quindi assicurati di avere una versione carthage maggiore di 0.20 e fai semplicemente:

 carthage update --platform iOS 

Proprio come @zirinisp ha detto:

  1. È ansible utilizzare il seguente comando: carthage update --platform iOS --no-use-binaries
  2. Utilizzando il seguente comando: xcrun swift -version per vedere la versione Swift
  3. Fai questo: Xcode->preferences->locations per cancellare i dati derivati ​​e i dati degli archivi, il più importante per cambiare gli strumenti da riga di comando per ” Xcode 8.1
  4. Utilizzando il seguente comando: xcrun swift -version , è ansible vedere la versione rapida è 3.0.1
  5. Imposta Use Legacy Swift Language Version = NO

Spero ti possa aiutare

Ho avuto esattamente lo stesso problema con la libreria XCTest_Gherkin , quello che ha funzionato per me è stato:

  1. Product -> Scheme -> XCTest-Gherkin
  2. Product -> Build

Spero che sia d’aiuto. Sto usando Cocoapods.

In Xcode Build Settings assicurati che i tuoi percorsi di ricerca del framework contengano la cartella Carthage Build appropriata:

 $(inherited) $(PROJECT_DIR)/Carthage/Build/iOS 
  1. Spostare la versione beta / GM se la cartella Xcode in / Applications e denominarla Xcode-beta
  2. Controlla l’output di:

    xcrun swift --version

eseguendo questo comando nel terminale, l’output dovrebbe corrispondere alla versione rapida che si desidera compilare, poiché Carthage utilizza l’output di questo comando per determinare la versione locale di Swift.

  1. Aggiorna la versione di Xcode alla più recente su Terminale eseguendo il seguente comando:

    sudo xcode-select -s /Applications/Xcode-beta.app/

  2. Costruisci le librerie per iOS e impedisce a Cartagine di scaricare binari precompilati esistenti (ancora incompatibili), eseguendo il seguente comando:

    carthage update --platform iOS --no-use-binaries

  3. Pulisci e crea