Come convertire un progetto da Swift 4.2 a 5

Avevamo visto come convertire un progetto da Swift 3 a Swift 4, oggi molto semplicemente vedremo come convertirlo:

Conversione a Swift 5 disponibile

Prima di tutto dovrete armarvi di Xcode beta, attualmente alla versione 10.2 dal sito developer.apple.com e sappiate già in partenza che non sarà indolore!

Sappiate anche che una volta convertito, non potrete pubblicare app sullo store di Apple con una versione beta di Xcode, quindi prestate molta attenzione se modificate un progetto in fase di product.

Detto questo, come al solito aprite un progetto e nel caso non dovesse comparirvi la richiesta di aggiornamento, potete forzarlo andando su:

Edit -> Convert -> To Current Swift Syntax...

Nel caso non venga cambiato, cercate nel progetto la stringa:

SWIFT_VERSION

E modificatela opportunamente… aspettandovi decine se non centinaia di warning dal nostro caro e amato Xcode.

Come gestire i problemi di versione con Carthage

Nel caso abbiate problemi a compilare o aggiornare un progetto pieno di dipendenze gestite con Chartage e quindi vi dia vari problemi come ad esempio:

Cercando di aggiornare un progetto con Carthage

In questo caso sto utilizzando Swift 4.2 nel progetto ma una dipendenza è stata compilata con Swift 3.3!

Vi basterà (salvo imprevisti del caso) ricompilare anche le dipendenze con la versione di Swift attuale.

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

Come installare Carthage

Andate qui e scaricate l’ultima versione https://github.com/Carthage/Carthage/releases altrimenti compilatevelo da zero Installatelo normalmente e aprite il terminale.

Spostatevi nella cartella del vostro progetto ed eseguite:

nano Cartfile

E incollate (modificando il nome in base a quello che state creando):

github "Utente/Progetto"

Salvate ed eseguite:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/
carthage update --platform iOS
open Carthage

Poi andate dentro la cartella /Carthage/Build/iOS, selezionate il file .framework e trascinatelo dentro il vostro progetto.

Run script

Ora andate su Build Phases, cliccate sul + in alto a sinistra e poi su Run Script. Dentro Shell mettete:

/usr/local/bin/carthage copy-frameworks

E su Input Files il percorso del framework che avete appena creato:

Linked frameworks and libraries

E voilà, ora andate e importatene tutti! Vi basterà importare le vostre dipendenze semplicemente con:

import Progetto

Come convertire un progetto in Swift

Xcode permette di fare conversione tra le versioni di Swift (dalle più vecchie, alle più nuove ovviamente) in modo del tutto automatico. Peccato che a volte come tutte le conversioni automatiche… potrebbe non andare a buon fine e incasinarvi il progetto rendendovi tutto illeggibile:

Conversione Swift… a caso

Cosa fare in questo caso? Beh, fare versione per versione. Quindi se state cercando di aggiornare un progetto da Swift 2 e volete portarlo al 4, scaricartevi le giuste versioni di Xcode e fatelo passo a passo per ogni versione, senza interferire tra le impostazioni dei progetti (di solito contenute nel file plist).

Come convertire un progetto da Swift 3 a 4

Come anche nella conversione da Swift versione 2 a 3, avrete bisogno di una versione specifica di Xcode (la 9.3 attualmente, scaricabile da App Store) per convertire da Swift 3 a 4, non vi sarà possibile passare direttamente dal 2 al 4 se non manualmente riscrivendo da zero la vostra app.

Potrebbe essere che appena aperto il vostro progetto alla versione 3, vi compaia automaticamente questa schermata:

Conversion to Swift 4 is avaliable

Se così non fosse, andate in questo menu:

Convert to current Swift syntax

Confermate Minimize Inference (raccomanded):

Minimize inference (raccomanded)

E nel caso apportate manualmente le modifiche effettuate:

Manual steps necessary

Mi raccomando anche in questo caso, fatevi prima un backup di tutto.

Come convertire un progetto da Swift 2 a 3

Prima di tutto dovete scaricarvi la vecchia versione di Xcode perché quella attuale (la 9.3) non permette di farlo. E per vecchia versione intendo più precisamente la 8.3.3 e non altre ancora più vecchie.

Una volta scaricato chiudete la versione nuova, qualunque essa sia e aprite solo la 8.3.3 e cliccate su:

Edit -> Convert -> To current Swift syntax

Poi confermate che volete convertire la sintassi del vostro progetto alla nuova versione di Swift:

Convert to current Swift syntax

E selezionate i target che volete convertire:

Select targets to convert

Tutto questo perché se avete un progetto con Swift 2, non vi sarà possibile passare direttamente alla versione 4 (o quella attuale in cui starete leggendo questo articolo).

Fate massima attenzione e fatevi un backup prima (meglio ancora se usate git).