Compatibile con Xcode 8

If else in Swift. L’arte del controllo del codice

Regola numero 1: un buon programmatore si definisce tale quando ha pieno controllo del suo codice.

I sistemi di controllo sono alla base dei meccanismi principali di giochi e applicazioni. Sai che un Pupazzetto di un gioco muore quando gli hp scendono o sono uguali a 0 ma non sai chi o cosa lo determina!

In questa lezione analizzerai la principale istruzioni di controllo: if else in Swift. Per istruzione di controllo si intende una particolare parola chiave (keyword) che altera il normale flusso d’esecuzione del codice, eseguendone una parte oppure l’altra.

Eseguire una parte di codice in base ad una certa condizione fa parte dei meccanismi di controllo presenti in Swift.

If ed else, letteralmente “se” e “altrimenti“, è un’istruzione che permette di eseguire, o meno, una porzione di codice in base allo stato di una condizione.

Spesso ti sarà capitato di dover scegliere tra due o più alternative:

  • Oggi sono stanco, studio o non studio?
  • Se studio cosa mi metto a studiare?
  • E se non studio cosa faccio?

Questa metodo di interazione con la realtà è continuamente presente durante la quotidianità. Spesso non ci fai nemmeno caso ma reagisci a qualsiasi evento utilizzando sempre la logica del: faccio o non faccio?

Non te ne accorgi perché il cervello è talmente allenato a lavorare in questa maniera che non ti da nemmeno il tempo di pensarlo. Una cosa del genere avviene durante le fasi di pericolo.

Sicuramente ti sarà capitato di vederti arrivare addosso un pallone e di schivarlo automaticamente. L’automazione è data dal cervello che dentro di se ha attivato, prima di fartelo notare, una strategia di tipo if else.

Schivo il pallone e evito di farmi male o prendo il pallone in faccia? La nostra indole consiglia sempre al nostro “io” di salvarsi e quindi la scelta non può che ricadere nell’opzione più sicura, schivare il pallone.

Nella vita sei sempre di fronte ad un bivio dove imboccare una strada significa inesorabilmente non poter intraprendere l’altra. 

Ok! La smetto con la filosofia.

Se agli esseri umani è permesso poter scegliere, perché non dovrebbe essere permesso ad un Computer, ad un iPhone e di conseguenza al nostro codice?

Nella lezione introduttiva ti ho detto che i linguaggi di programmazione cercano di emulare il nostro modus operandi. In base a questa supposizione, anche il linguaggio Swift dovrebbe permettere di strutturare il codice utilizzando la logica dell’if-else (sistema presente in tutti i linguaggi di programmazione).

Prima però fammi svelare un segreto!

Pseudo codice: Risolvere un problema informatico senza scrivere una riga di codice

Un’altra caratteristica di un buon programmatore è quella di saper immaginare il funzionamento del codice prima della sua scrittura.

L’immaginazione è il sistema che ci permette d’arrivare ad una soluzione concreta per un qualsiasi problema. Immaginare il funzionamento di un codice ti permetterà d’avere un quadro semi completo di ciò che andrai a realizzare.

Ad esempio, in base alle conoscenze che hai acquisito dalla lezione precedente, se adesso ti dicessi: “Conserva in un dizionario i primi versi della divina commedia”, tu cosa faresti?

Inizieresti a pensarePensando assoceresti la parola “conserva” ad una variabile/costante e la parola “dizionario” al dizionario del linguaggio Swift. Cioè, mentre leggi un problema, nella tua testa dovresti avere una mezza idea di come sarà architettato il codice della tua applicazione.

Alla fine, quando ti siederai davanti al Playground, scriverai:

L’esercizio era relativamente semplice e non richiedeva, almeno per me, molta immaginazione per essere risolto.

Se lo è stato per te, fammelo notare in un commento. Qui non mangiamo i nuovi programmatori.

Quando gli esercizi iniziano a diventare di una certa portata o quando ti metterai a sviluppare applicazioni con il linguaggio Swift, pensare risulterà poco vantaggioso perché rischieresti di perdere pezzi del tuo ragionamento.

A tal proposito, se vuoi, puoi cominciare a leggere questa lezione su come impostare un’idea ed un progetto di un’applicazione del corso successivo.

Ecco che in tuo soccorso arriva lo pseudo codice!

Scrivere in pseudo codice

Lo pseudo codice è un modo di rappresentare il codice in maniera user-friendly.

Consiste nello scrivere su una tavoletta d’argilla, va benissimo anche la carta o il notepad, il comportamento del codice del programma.

Ti faccio direttamente un esempio così da capirci.

Crea il codice per la gestione della vita di un personaggio di un video gioco. Il codice deve controllare i livelli di salute del PG e in particolare deve fare due cose:

  1. Quando la vita scende sotto lo 0 (zero) deve eseguire delle azioni (per esempio mostrare sullo schermo il messaggio: Sei morto).
  2. Altrimenti ne eseguirà altre (tipo permetterti di continuare a camminare e cose del genere).

Ecco come io ho pensato di risolverlo:

  • L’esercizio parla di gestione della vita. Mmmm in genere la vita in un videogioco è rappresentata da un numero.
    • Come posso gestirla? Ecco! Una variabile di tipo Double chiamata vitaGiocatore!
  • Poi serve un controllo, controllo, controllo …. Trovato! Serve qualcosa che a che fare con la logica del: “Se succede qualcosa allora fai questo, altrimenti fai altro”.
    • Sicuramente dovrò adottare un if else in Swift.

Ogni volta che pensi ad un probabile codice, puoi abbozzarlo sul foglio in maniera discorsiva. in questo modo genererai un documento simile al seguente:

Capito il meccanismo?

Prima di buttarsi nella scrittura del codice è necessario avere un’idea di ciò che andrai a creare. Per il momento questa prassi ti potrà sembrare solo qualcosa di superfluo ma, quando incomincerai a programmare un’applicazione, non potrai farne a meno.

if else linguaggio swift

La sintassi dell’if else in Swift

Adesso non serve altro che sostituire lo pseudo codice con il codice vero e proprio.

La sintassi standard dell’if else in Swift è la seguente:

L’esempio della vita di un PG, da pseudo codice in codice Swift, si trasforma nella seguente maniera:

if-else-linguaggio-swift

Noi esseri umani riusciamo a capire quasi immediatamente quando una condizione è vera oppure no.

Ma qual è il meccanismo che sta dietro ad un linguaggio di programmazione come Swift?

Quando ho scritto: if (vitaGiocatore >= 50), come fa a capire se “vitaGiocatore” è maggiore o uguale di 50?

La variabile vitaGiocatore rappresenta un valore Intero (Swift lo capisce in automatico perché hai assegnato un valore Intero, cioè senza virgola). Non ti ricordi cosa sono i tipi di dato? Rinfrescati la memoria leggendo la lezione sulle variabili e costanti del linguaggio Swift.

Quando l’esecuzione del codice arriva alla riga successiva, trova la parola if. Il compilatore esegue queste operazioni:

  1. Entra dentro la condizione
  2. Estrapola il contenuto della variabile (cioè prende il valore dalla variabile vitaGiocatore)
  3. Lo confronta con il valore che sta dopo l’operatore logico

Nella pratica prende il contenuto di vitaGiocatore e, dato che c’è l’operatore >=, si domanda:

  • la variabile vitaGiocatore, che vale 10, è maggiore o uguale di 50?

Un po’ come se facesse una cosa del genere:

All’interno della condizione viene eseguito un confronto. La cosa che non devi mai dimenticare è che è sempre un confronto tra l’elemento di sinistra con l’elemento di destra.

Lo stato di una condizione: true o false? ed il tipo Bool

Quando avviene l’operazione di confronto, il compilatore è in grado di capire 2 cose:

  • La condizione è TRUE (vera) quando l’elemento di sinistra soddisfa il confronto con l’elemento di destra.
  • La condizione è FALSE (falsa) quando l’elemento di sinistra non soddisfa la condizione di confronto.

Nel caso della vita del giocatore, il compilatore, dedurrà che quella condizione è false perché 10 è minore di 50.

condizione di un if else linguaggio swift

Fai attenzione a non confonderti!

Secondo te, l’operazione 4 < 5 quale delle due condizioni ritornerà?

Te l’ho fatto notare perché in certi casi sei indotto a pensare al contrario. Ovvero pensi che 5 è maggiore di 4 il quale ovviamente renderebbe FALSE il 4 < 5 nell’ottica della programmazione. Nel nostro esempio, quindi, il confronto ritornerà un TRUE perché: 4 è vero (true) che è minore di 5.

Apri il playground e scrivi il seguente codice:

tipo-bool-linguaggio-swift

La condizione è un tipo di dato chiamato Booleano: un tipo di dato che può essere solamente TRUE o FALSE (l’ho elencato nei tipi di dato della lezione sulle variabili e costanti).

Perché si chiama Booleano? Perché deriva dal nome del matematica che per primo ha definito questa particolarità: George Bool.

Il blocco di istruzioni

Un blocco di istruzioni è il codice delimitato da due parentesi graffe. 

blocco if else linguaggio swift

Subito dopo la condizione dell’if è stata scritta una parentesi graffa.

Questa sta ad indicare che, da ora in avanti, fin quando non troverà la parenti di chiusura, tutto il codice all’interno verrà attivato solo quando verrà verificata la condizione.

Il blocco di istruzioni dell’if, viene attivato solo se la condizione è true mentre, quello dell’else solo se la condizione dell’if è false:

gif_if_blocchi

In questo esercizio c’è un problema, sei riuscito a vederlo?

La soluzione verrà data quasi a fine lezione. Il concetto di blocco verrà ripreso nelle lezioni successive, per ora consideralo solo come il codice delimitato da due parentesi graffe.

Operatori di Comparazione

Gli operatori offrono lo strumento per confrontare due o più variabili/costanti, uno lo hai incontrato poco fa (il simbolo < e >), ecco quali sono gli altri e come utilizzarli:

Operatore Descrizione
== Uguale a
a == b
!= Non uguale
a != b
> Maggiore di
a > b
< Minore di
a < b
>= Maggiore o uguale di
a >= b
<= Minore o uguale di
a <= b

Ogni operazione di confronto ricordati che:

  1. Ritorna un Bool.
  2. Un tipo Bool può essere true se l’operazione di confronto è verificata.
  3. false se non è verificata.
  4. E che viene confrontato l’elemento di sinistra con quello di destra.

Per fissare meglio l’idea eccoti alcuni esempi di comparazione e il valore di ritorno:

1 == 1 True, perché 1 è uguale a 1.
1 != 2 True, perché 1 non è uguale a 2.
2 > 1 True, perché 2 è maggiore di 1.
3 < 4 True, perché 3 è minore di 4.
1 >= 1 True, perché 1 è maggiore o uguale a 1.
2 <= 2 True, perché 2 è minore o uguale a 2.
4 < 3 False, perché 4 è maggiore di 3.
-1 <= -3 False, perché -1 è maggiore di -3.

Solo a scopo didattico, il Playground ti permette di confrontare due variabili o numeri scrivendo l’operazione che vuoi analizzare:

test operatori di comparazione swift playground

Quello che vedi nell’immagine sopra è solo un sistema veloce che solamente il Playground ti mette a disposizione. Quando svilupperai applicazioni scriverai sempre così:

Operatori di comparazione if else linguaggio swift

Esercizi if else in Swift, svolti e commentati

Ti consiglio, una volta visto come li ho risolti, di provare a risolverli da solo senza guardare la soluzione.

Esercizio 0. Controllare valore di una variabile

Implementa un controllo su una variabile che rappresenta un nome. Se il nome è uguale a “Peppe” allora stampa: “Ciao Peppe” altrimenti stampa: “Ciao sconosciuto”.

  • Alla riga n.1 viene definita e inizializzata una variabile di tipo String a cui viene assegnato il valore “Peppe”.
  • if nome == “Peppe”, verifica il contenuto della variabile nome con la stringa “Peppe”. Dato che nome contiene il valore “Peppe” allora il confronto “Peppe” == “Peppe” genererà un true e quindi entrerà dentro il blocco dell‘if, stampando “Ciao Peppe”.
    • Ti ricordo che \(variabile) non fa altro che riportare il contenuto di una variabile all’interno di una stringa.
  • Se l’if non è verificato, allora (else) stampa un messaggio standard, ovvero “Ciao Sconosciuto”.

Prova a cambiare il valore della variabile nome per fare delle prove.

 
Esercizio 1. Check e cambio di valore di un array.

Crea un array di Int e inizializzalo con valori a tua scelta. Crea un’istruzione if else in Swift che cambi il valore alla posizione 0 seguendo questa logica: se il valore alla posizione zero è > 0 lo trasforma in 1, altrimenti in -1.

  • Come studiato nella lezione precedente, l’array non è altro che una collezione di elementi dello stesso tipo.
    In questo caso tutti numeri Interi.
    Il programma vuole cambiare il valore alla posizione 0, quindi il 44, in 1 se il numero è maggiore di 0 e -1 in tutti gli altri casi.
  • Alla riga n.3, if (array[0]> 0), estrapola il valore alla posizione zero dall’array, array[0] è il numero 44, verifica se è maggiore di 0. In questo caso 44 > 0 è true.
    Essendo true, entrerà dentro le parentesi e cambierà il valore al contenuto dell’array in posizione zero. Quindi array[0] = 1, non fa altro che cambiare quel 44 in 1.
  • Alla riga n.5, l’else è verificato in tutti quei casi in cui array[0] è minore di 0 (per tutti i numeri negativi). In questo caso esegue la stessa operazione e porta a -1 il valore alla posizione 0 dell‘array.

Prova a cambiare il valore alla posizione 0 in un numero negativo.

 
Esercizio 2 (da svolgere).

Seguendo il ragionamento degli esercizi precedenti:
Crea due array di String e metti delle parole a piacere dentro. Crea un’istruzione if else in Swift che controlli se il valore dell’array1 alla posizione 2, è uguale al valore dell’array2 alla posizione 1.

Se hai difficoltà a svolgere o a capire questi esercizi, per favore scrivi un commento alla lezione. Ribadisco che qui non mangiamo i programmatori.

Gli operatori Logici

Eccoti invece quali sono gli operatori logici che non fanno altro che permetterti di estendere la condizione di un if.

Operatore  Descrizione operatore
! Il ! o Not inverte una condizione Booleana, se è true la considera false e viceversa. Va inserito come prefisso di una variabile, costante o operazione di confronto:
La condizione !sonoBello può essere letta come: “se non sono bello allora”.
&& Il simbolo && (And) permette di concatenare più istruzioni di verifica le quali devono essere entrambe e contemporaneamente true.
|| Il simbolo || o Or permette di concatenare più istruzioni di verificaL’intera condizione è true se almeno una delle istruzioni di controllo è true.

condividi xcoding

Ho impiegato un po’ di tempo a scrivere questa lezione, aiutami mandando un sms… No scherzo, basta un semplice like o follow alle mie pagine.

[addtoany]

Grazie davvero :-)

If a cascata o concatenati

La bellezza di questo tipo di istruzioni è che possono essere combinate tra loro. La concatenazione avviene aggiungendo la parola “if” a seguire della parola “else” e definendo una nuova condizione di controllo:

L’espressione viene detta if-else-if.

Nell’esempio che vedi sopra:

  • Il primo if controlla che x sia uguale o meno a y.
  • La seconda istruzione è l’else if e controlla il caso in cui la x sia maggiore di y.
  • L’ultimo è l’else classico e si attiva quando i due if sovrastanti non vengono soddisfatti.

L’ordine degli if è fondamentale! Pena l’espulsione da Hogwarts.

Se ci pensi è logo. Perché se il compilatore entrasse in un’istruzione allora non non potrebbe mai entrare nelle altre.

Ritorniamo al discorso fatto ad inizio lezione, ovvero una volta che si è imboccata una strada, in questo caso una condizione dell’if, non si può intraprendere l’altra.

Per capire cosa voglio dire, prova ad invertire gli if di questo esempio:

Hai visto cos’è successo?

In realtà è probabile che tu non l’abbia fatto :P Quindi ti bandisco definitivamente dal consiglio di Elrond.

Esercizi if else if in swift, svolti e commentati

Anche in questo caso, per fissare meglio le idee, guarda come ho risolto gli esercizi e prova a risolverli nuovamente.

Esercizio 3. Concatenare più if else if
  • Crea 2 variabili di tipo String. Chiama la prima nome e la seconda cognome.
  • Entrambe le variabili istanziale con un testo vuoto. Il testo vuoto è dato dalla stringa “”.

Implementa una logica di tipo if else in Swift in grado di stampare su console i seguenti messaggi:

  • Non hai inserito né il nome né il cognome.
  • Hai inserito il nome.
  • Hai inserito sia il nome che il cognome.

 
Esercizio 4. Controllo avanzato in un array.

Dato un array di Int, crea un’istruzione if else con il linguaggio Swift che controlli il numero di elementi:

  • 10 o più elementi
  • Non ha elementi
  • Ha solo 1 elemento

Per poter contare il numero di elementi di un’array, puoi utilizzare la funzione .count:

2 consigli da seguire

If Else in Swift: 2 Consigli e How To utili

Dato che, da questa lezione in avanti, avrai sempre a che fare con le istruzioni if else in Swift, è necessario che ti lasci alcuni consigli utili che puoi venire a ricontrollare ogni volta che nascerà qualche dubbio a riguardo:

#1 L’if può esistere anche senza else, ma fai attenzione!

Guarda il seguente esempio:

La variabile “a” è minore della variabile “b” quindi non potrà essere mai eseguito quell’if. In questo caso il blocco dell’if viene saltato e viene eseguita l’istruzione sotto.

Però, quando la variabile “a” è maggiore della var “b” entra dentro l’if ma viene anche eseguita l’istruzione sotto.

Questa sintassi viene utilizzata solamente per eseguire delle azioni che non compromettono il funzionamento del resto del codice. O in alcuni casi particolari che vedrai quando studierai le funzioni in Swift.

Ad esempio, immagina che un sistema informatico permetta di farti accedere ad un’area segreta solo quando inserisci una password:

  • password è la password per accedere al sistema.
  • passwordInserita è la password che l’utente dovrebbe inserire.

La password per accedere al sistema deve essere uguale a “123”.

Le due password, essendo diverse, attivano l’if che prontamente ti avvisa che non puoi entrare nell’area protetta. La cosa strana è che succede quello che non vorremmo succedesse mai ad una nostra applicazione. Ovvero, così come l’ho scritto il codice ti farà entrare sempre nell’area segreta.

Questo accade perché il codice che si trova dopo l’if è direttamente collegato a ciò che l’if dovrebbe controllare.

Sapresti risolvere questo problema con le conoscenze attuali?

Avresti potuto prevenire il problema utilizzando un if-else:

#2 Circoscrivi tutti i possibili casi d’errore e d’interesse

L’if else in Swift nasce principalmente come sistema di controllo (lo vedrai meglio nella prossima lezione) più che di scelta. O meglio la scelta è subordinata al tipo di controllo.

Non c’hai capito na mazza? Tranquillo, neanche io!

Ti faccio un esempio.

Se ti dicessi di sommare numeri con lettere di sicuro mi diresti che è impossibile.

Il problema è che il Playground, come qualsiasi altro compilatore, non è in grado di dirti: “Ehi senti! Questa operazione non la puoi fare”.

In realtà ci riesce, però lo fa sotto forma d’errore che può compromettere il funzionamento dell’applicazione o programma (vedrai come risolvere questo errore a fine corso).

La maggior parte dei crash delle applicazioni sono dovuti a errori non controllati.

Ad esempio, un errore famosissimo, che puoi studiare con le conoscenze che hai adesso, è la divisione di un numero per 0. 

Il 21 Settembre 1997, la nave da guerra americana USS Yorktown, ha visto andare in crash tutti i suoi sistemi informatici, che gestivano il comparto missilistico, a causa di una divisione per 0.

L’errore, che poteva essere fatale (si parla di missili), è imputato a chi ha progettato il sistema. Il quale non ha tenuto conto di tutti i casi possibili d’errore.

C’è da dire però che il linguaggio Swift, come altri linguaggio simili, è stato progettato per trattare questa tipologia d’errori.

Quindi anche se non prenderà a fuoco il tuo Mac è giusto analizzare uno dei più grandi problemi che ha afflitto i programmatori delle generazioni passate.

Esercizio. Risoluzione equazione matematica di 1 grado

Non ti ricordi come si fa? Esiste sempre Wikipedia: Equazione di primo grado.

Lavoriamo con lo pseudo codice. La sintassi standard di un’equazione di primo grado è la seguente:

  • ax + b = 0 (“x” è l’incognita e “a” e “b” sono i termini noti)

Dove la soluzione è data dalla formula:

  • x = -b/a

Le cose che sappiamo per certo è che se:

  • a != 0 e b != 0, l’equazione è determinata e ammette come soluzione -b/a.
  • a == 0 e b != 0, l’equazione è impossibile perché non ammette soluzione. Se questo concetto ti suona strano sappi solamente che b/0 == infinito.
  • a == 0 e b == 0, l’equazione è indeterminata.

Quindi se adesso riporti l’equazione sul Playground e la scrivi con il linguaggio Swift, quello che viene fuori è:

Ho definito tutte le variabili come Double perché nella maggior parte dei casi una divisione genera sempre un numero con la virgola.

Se adesso inizi a cambiare il valore alle variabili “a” e “b” potrai notare come il Playground e il linguaggio reagisce alle varie combinazioni:

If Funzione Primo Grado

Nessuna esplosione! Come previsto Swift riesce a capire da se quando un’operazione genera un problema come quello della divisione per 0. Nel dettaglio, manda i seguenti messaggi quando:

  • a == 0 e b == 0 restituisco NaN: Not a Number (Non è un Numero).
  • a == 0 e b != 0 restituiscono inf in base a segno di “b” può essere -inf o +inf. Lascia pure stare queste definizioni da ingegnere o matematico.

Se fossi stato lo sviluppatore del sistema della nave, ti sei chiesto cosa avresti potuto fare?

Ammettiamo che il linguaggio Swift non riesca a gestire questi casi e che quindi generi un errore che potrebbe compromettere l’applicazione che andrai a sviluppare.

Di sicuro andare a controllare il risultato dell’operazione, con un if else in Swift, non è la scelta corretta. Infatti controllare il risultato significa aver eseguito l’operazione. Nel caso si presentasse un’operazione come le precedenti, significherebbe comunque mandare in crash l’app.

La scelta più saggia è quella di controllare a monte i valori delle variabili e solo dopo eseguire l’operazione.

Grazie agli if else in Swift sei riuscito a controllare tutti i possibili casi d’errore, spostando l’operazione matematica solo ed esclusivamente nell’effettivo caso reale.

 

Tiriamo le fila ed esercizi della lezione

Da qui in avanti le istruzioni if else in Swift ti accompagneranno fino al resto dei tuoi giorni. Qualsiasi codice scritto con il linguaggio Swift, come con gli altri, utilizza gli if else.

Nella prossima lezione ti parlerò di tutto e niente, no non è un modo di dire! È uno dei concetti più belli introdotti con il linguaggio Swift: l’opzionalità di una variabile.

Prima però di passare alla prossima lezione eccoti un ricapitolo sull’argomento degli if else in Swift:

Tiriamo le fila

  • Prima di scrivere il codice prova ad immaginarne il comportamento.
  • Impara ad utilizzare lo pseudo codice (se lo farai acquisterai 100 punti stima).
  • Con if else in Swift sei in grado di eseguire una porzione di codice, o blocco di codice, in base al verificarsi di una condizione.
  • La condizione di un if può essere o true o false. true e false sono valori del tipo di dato Bool (o chiamato Booleano).
  • Se la condizione è true attiva il blocco immediatamente sotto l’if, altrimenti attiva l’else.
  • L’if else in Swift viene utilizzato per prevenire errori o eseguire determinate azioni particolari (vedi il caso del conto bancario).
  • Poniti sempre la domanda, quali errori potrebbero nascere? E come posso controllarli?
  • Un if può esistere senza else (bisogna però fare le opportune considerazioni).
  • Oltre all’if else esiste anche l’if else if che aumenta i controlli nel caso in cui esistano più casi da verificare.

Esercizi della lezione

Esercizio 6. Data una variabile Int che rappresenta il volume di un altoparlante (var volume: Int = 0) crea il codice che controlla il volume dell’altoparlante. In particolare, se il volume è:

  • Maggiore di 35, scriverà sulla console che “il volume è troppo alto”.
  • Minore di 35 ma maggiore di 10, scriverà “il volume è medio alto”.
  • Minore di 10 e maggiore di 0, scriverà che “il volume è normale”.
  • Uguale a 0, dirà che “il dispositivo è spento”.
  • Minore di 0, “non puoi inserire un volume negativo”.

Per qualsiasi dubbio e chiarimento, scrivi un commento!

Buona Programmazione!

Changelog

  • 7/10/2016 – Modifiche generali e correzioni al testo.
  • 04/10/2016 – Aggiunto il Changelog e assicurata compatibilità con Xcode 8 e Swift 3.

Torna a: Corso gratuito linguaggio di programmazione Swift > Le basi del linguaggio Swift

Start typing and press Enter to search

Tutorial UIKit in Swift. Come animare la propria applicazioneOpzionalità in Swift