Xcode 8 Beta 3 Utilizzare il problema Legacy Swift

Ho un progetto Objective-C in Xcode 8 Beta 3. Dall’aggiornamento, ogni volta che provo a build ricevo il seguente errore:

“È necessario utilizzare la versione di Legacy Swift Language” (SWIFT_VERSION) per essere configurato correttamente per i target che utilizzano Swift. Usa il menu [Modifica> Converti> In Sintassi Swift corrente …] per scegliere una versione Swift o usa l’editor Impostazioni di configurazione per configurare direttamente le impostazioni di compilazione.

Qualcuno ha incontrato questo? Dato che si tratta di un progetto Objective-C, non ci sono impostazioni di build per configurare Swift. Mi sono anche assicurato che nessuna delle dipendenze del progetto o CocoaPod stia usando Swift. L’unica soluzione che ho è usare Beta 2. Qualche idea su come risolvere questo problema?

Dovrei anche menzionare che sto usando OSX 10.12 Beta 2.

Se stai usando CocoaPods e vuoi che venga risolto automaticamente ogni volta che fai pod install , puoi aggiungere queste linee alla fine del tuo Podfile:

 post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '3.0' end end end 

EDIT: questo problema è stato risolto se si utilizza CocoaPods v1.1.1 o versioni successive. Non dimenticare di rimuovere l’impostazione ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES dai tuoi obiettivi principali del progetto.

Ho appena trovato un modo per sistemarlo.

Vai alle impostazioni di Build del progetto o della libreria e imposta l’attributo Swift Compiler Version “Use Legacy Swift Language Version” da Non specificato a Sì o NO.

inserisci la descrizione dell'immagine qui

Ho ignorato questo problema da un po ‘di tempo e sto solo lavorando su altre cose nel frattempo – ho finalmente trovato la soluzione al mio problema.

Dal momento che il mio progetto è Objective-C ho pensato che forse uno dei pod che sto usando usava Swift, ho controllato ogni pod e nessuno di loro lo era.

La soluzione finale era che il mio modello Core Data era impostato per generare codice in Swift anche se sono stati generati manualmente nel menu File> Nuovo> NSManagedObjectSubclass. Tutto quello che dovevo fare era passare a Objective-C.

immagine dello schermo

Questo problema è visibile anche in Xcode-8.1. Quando aggiungiamo un nuovo Target come Extension o Widget e la libreria di terze parti è integrata in un nuovo target con l’aiuto di cocopods. Dopo l’ installazione di Pod . Possiamo affrontare lo stesso errore di cui sopra.

Modificare la versione della versione legacy swift in ogni impostazione di compilazione della libreria su

No

inserisci la descrizione dell'immagine qui

Se stai usando Xcode 8 o successivo

  1. Vai a Build Settings
  2. Trova la versione in lingua legacy swift
  3. Sì, Swift 2.3
  4. No – Swift 3.0 inserisci la descrizione dell'immagine qui

Aggiungi sotto il codice alla fine del podfile.

 post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '3.0' end end end 

Sto lavorando a un progetto che ha mixato codice objective-c e swift in precedenza ho utilizzato la versione 2.3 e dopo l’aggiornamento a swift 3 non sono riuscito a creare il progetto. Xcode si è lamentato con il messaggio di errore menzionato.

Apparentemente, c’era ancora una versione obsoleta di Swift specificata nel mio file project.pbxproj. È stato specificato 3.0.1 rapido:

 SWIFT_VERSION = 3.0.1; 

Considerando che, ho già avuto 3.0.2 installato:

 $ xcrun swift -version Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) Target: x86_64-apple-macosx10.9 

Sooo, l’ho risolto cambiando la versione di Swift nel file project-pbxproj in:

 SWIFT_VERSION = 3.0; 

Sembra che lo specificatore della versione a livello di patch fosse troppo specifico.

Nel mio caso ho solo cose da fare

Scegli progetto Target => Vai a Build setting => Cerca “Swift Language Version” => dai valore alla versione attuale di Swift

Questo è tutto ciò che ha risolto il mio problema

Segui questa immagine

Ho avuto lo stesso errore. Ho provato a cercare “Use Legacy Swift Language Version”, ma non trovato. Sto usando Xcode 8.3.3 Dopo aver navigato troppo e lavorando in giro ho trovato questa soluzione, e questo ha funzionato per me. inserisci la descrizione dell'immagine qui

 Here are the steps. 1=> select your target from Xcode 2=> go to build setting 3=> search for "Swift Language Version" 4=> change it to swift 3. (or accordingly.) 

imposta “Usa versione Legacy Swift Language” su “SÌ” se utilizzi una versione precedente di swift nel tuo progetto o in qualsiasi terza parte. “No” se il tuo progetto è aggiornato alla versione attuale attuale. se non si configura la versione rapida, dopo ogni aggiornamento e installazione, il framework Pod deve specificarlo.

In realtà ho dovuto effettuare una ricerca di “Legacy Swift” per poterlo modificare da non specificato a “Sì”. Quando ho semplicemente fatto scorrere la sezione sopra descritta, non ero in grado di cambiarla. Spero che questo possa aiutare qualcuno.

Il mio progetto è scritto in Swift. Ho avuto lo stesso errore con fastlane . Quello che è successo è stato il mio Xcode aggiornato automaticamente, quindi ho dovuto aggiornare il mio progetto a Swift 3.0. Hai un sacco di errori. La correzione e il debug richiedevano troppo tempo e non ne valeva la pena in quel momento, quindi ho deciso di installare una versione precedente di Xcode. Ho ripristinato il mio codice a 2.3. Quindi la fastlane beta non funzionava più. È venuto fuori che avevo bisogno di impostare lo strumento della riga di comando su 7.3. inserisci la descrizione dell'immagine qui

Stavo riscontrando lo stesso problema e l’ho risolto effettuando le seguenti operazioni:

In Progetto> Impostazioni di costruzione:

Always Embed Swift Standard Libraries = $(inherited) Use Legacy Swift Language Version = YES

Quindi nel mio Podfile:

config.build_settings['SWIFT_VERSION'] = '3.0'

L’utilizzo di queste tre impostazioni ha rimosso tutti gli avvisi e mi ha permesso di compilare correttamente.

Il più oscuro e quello che effettivamente ha ottenuto il progresso per la compilazione stava cambiando SWIFT_VERSION nel Podfile da 3 a 3.0 come suggerito qui .

Da XCode 8 in poi, puoi usare swift 2.3 anche se XCode 8 usa swift 3.x come versione swift predefinita. Per usare lo swift 2.3, basta triggersre il flag Usa Legacy Swift Language Version su YES da Build Setting, quindi XCode userà Swift 2.3 per quel target di progetto.

Prima di provare soluzioni complicate, ecco un controllo di base che devi fare se sei nuovo in Cocoapods e stai riscontrando questo problema.

Potrebbe essere necessario:

  • Apri di nuovo il tuo Podfile
  • Controlla che la linea per la piattaforma non sia commentata con un ‘#’. Dovrebbe finalmente assomigliare a qualcosa come:

platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)

  • Salva il tuo Podfile, chiudi Xcode ed esegui di nuovo l’ pod install
  • Apri il tuo project.xcworkspace

Forse è solo quello.

Se no, puoi andare sopra 😉

Ho avuto questo stesso problema dopo l’aggiornamento a xcode 8.3.2 ma l’opzione “Usa Legacy Swift Language” era scomparsa. Questa sembra essere la possibilità di cambiare ora: Versione Swift Lang

Usato questa correzione con Alamofire e altre librerie e tutto funziona bene.

Vai a Impostazioni di creazione progetto per progetto e Target fai sotto due.

 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES And Swift Compiler - Version = Swift 3 

Passa all’ultimo Swift 3 .

Errore risolto.

Se è stato risolto il problema di errore, ti piace.

In Xcode 9 beta. Vai a Impostazioni progetto, Impostazioni di costruzione, cerca Swift Language Version. In Xcode 9 devi specificare se stai utilizzando Swift 3.2 o Swift 4.

Se cambi ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES su NO ancora non funziona, è perché il problema di xcode non è il tuo problema. Facendo i seguenti passi:

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES proprietà ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES come YES sul target di avviso

2. poi mostrerà un avviso sulla barra di sinistra che consiglia di passare a Swift 3.0

3. poi tornare a NO . Ricostruisci il progetto, lo xcode finalmente rileva la tua modifica a NO !

Problema risolto in questo caso!