Menu
Coddy logo textTech

Swift Cheat Sheet

Ultimo aggiornamento

Hello World e basi

Swift non richiede codice di contorno al livello principale: basta una riga per eseguire qualcosa.

OperazioneSintassi
Stampare una rigaprint("Hello, World!")
Stampare senza ritorno a capoprint("Hi", terminator: "")
Interpolazione di stringheprint("Hi \(name)")
Commento// this is a comment
Commento su più righe/* ... */
Importare un moduloimport Foundation
Eseguire un fileswift run o swift main.swift

Variabili (let / var) e tipi

Usa let per le costanti e var per i valori modificabili; di solito i tipi vengono dedotti.

OperazioneSintassi
Costantelet age = 30
Variabilevar count = 0
Tipo esplicitolet name: String = "Ada"
Tipi baseInt, Double, String, Bool, Character
Conversione di tipoDouble(i), String(n), Int("42")
Tuplalet pair = (1, "a")
Alias di tipotypealias ID = Int
Controllare il tipovalue is String, value as? String

Optional

Gli optional rappresentano la possibile assenza di un valore; vanno scartati (unwrap) prima dell'uso.

OperazioneSintassi
Dichiarare un optionalvar name: String? = nil
Optional bindingif let n = name { ... }
Unwrap con guardguard let n = name else { return }
Nil-coalescinglet n = name ?? "default"
Optional chaininguser?.address?.city
Unwrap forzato (non sicuro)name!
Unwrap implicitovar name: String!
Map su un optionalname.map { $0.count }

Stringhe

Le stringhe sono tipi valore con pieno supporto Unicode.

OperazioneSintassi
Lunghezzas.count
Maiuscolo / minuscolos.uppercased(), s.lowercased()
Concatenare"foo" + "bar"
Interpolazione"Total: \(price)"
Contienes.contains("ell")
Ha prefisso / suffissos.hasPrefix("he")
Divideres.split(separator: ",")
Sostituires.replacingOccurrences(of: "a", with: "b")
Stringa su più righe""" ... """

Collezioni (Array, Dictionary, Set)

Tre tipi di collezione fondamentali, tutti tipi valore.

OperazioneSintassi
Array letteralevar nums = [1, 2, 3]
Aggiungere in codanums.append(4)
Accesso / conteggionums[0], nums.count
Map / filternums.map { $0 * 2 }, nums.filter { $0 > 1 }
Dizionario letteralevar ages = ["Ada": 30]
Accesso al dizionarioages["Ada"] restituisce un optional
Set letteralevar ids: Set = [1, 2, 3]
Inserire in un setids.insert(4)
Iterare un dizionariofor (k, v) in ages { ... }

Controllo del flusso

Le condizioni non richiedono parentesi; lo switch deve essere esaustivo.

OperazioneSintassi
If / elseif x > 0 { ... } else { ... }
Ternariolet r = x > 0 ? "pos" : "neg"
Switchswitch n { case 1: ...; default: ... }
Switch con intervallocase 1...5: ...
Ciclo for-infor i in 0..<10 { ... }
For-in su un arrayfor item in items { ... }
Ciclo whilewhile x < 100 { ... }
Repeat-whilerepeat { ... } while x < 100
Break / continuebreak, continue

Funzioni e closure

Le funzioni hanno parametri con etichetta; le closure sono blocchi di codice autonomi.

OperazioneSintassi
Definire una funzionefunc add(a: Int, b: Int) -> Int { a + b }
Etichetta esternafunc greet(to name: String) { ... }
Parametro predefinitofunc greet(name: String = "World") { ... }
Parametro variadicofunc sum(_ nums: Int...) -> Int { ... }
Più valori di ritorno (tupla)func bounds() -> (min: Int, max: Int) { ... }
Espressione closurelet f = { (x: Int) -> Int in x * x }
Trailing closurenums.map { $0 * 2 }
Argomenti abbreviati{ $0 + $1 }

Struct e classi a confronto

Le struct sono tipi valore (vengono copiate); le classi sono tipi riferimento (condivise).

OperazioneSintassi
Definire una structstruct Point { var x: Int; var y: Int }
Definire una classeclass Person { var name: String }
Inizializzatore di classeinit(name: String) { self.name = name }
Creare un'istanzalet p = Point(x: 1, y: 2)
Metodo mutating di una structmutating func move() { x += 1 }
Metodo di classefunc greet() { ... }
Ereditarietà (solo classi)class Student: Person { ... }
Proprietà calcolatavar area: Int { width * height }
Membro staticostatic let shared = Manager()

Enum

Gli enum raggruppano valori correlati e possono portare dati associati.

OperazioneSintassi
Definire un enumenum Direction { case north, south }
Usare un caselet d = Direction.north
Switch su un enumswitch d { case .north: ... }
Valori rawenum Status: Int { case ok = 200 }
Accedere al valore rawStatus.ok.rawValue
Inizializzare da un valore rawStatus(rawValue: 200)
Valori associaticase result(Int, String)
Metodi negli enumfunc label() -> String { ... }

La sintassi Swift che usi più spesso, in una sola pagina. Questa Swift cheat sheet è un riferimento rapido per il cuore del linguaggio: costanti e variabili, optional, stringhe, collezioni, controllo del flusso, funzioni e closure, oltre alle struct, alle classi e agli enum con cui crei app per iOS e macOS.

Tutto quello che trovi qui è Swift standard e compila con la toolchain ufficiale. Copia ciò che ti serve o prova ogni snippet dal vivo nel playground Swift, senza bisogno di Xcode.

Domande frequenti sulla Swift cheat sheet

Questa Swift cheat sheet è gratuita?
Sì. Questa Swift cheat sheet è completamente gratuita e non richiede registrazione. Salvala nei preferiti e torna qui ogni volta che devi cercare un pattern con gli optional, la sintassi delle closure o un metodo delle collezioni.
Come si fa l'unwrap di un optional in Swift?
Un optional può contenere un valore oppure nil, quindi va scartato prima di usarlo. I modi sicuri sono l'optional binding (if let n = name { ... }), un guard let all'inizio di una funzione, l'operatore nil-coalescing (name ?? "default") e l'optional chaining (user?.name). L'unwrap forzato con name! funziona ma manda in crash l'app se il valore è nil, quindi usalo solo quando ne hai la certezza.
Qual è la differenza tra struct e class in Swift?
Una struct è un tipo valore: assegnarla o passarla crea una copia, quindi le modifiche non toccano l'originale. Una class è un tipo riferimento: le copie condividono la stessa istanza, e solo le classi supportano l'ereditarietà. Apple consiglia di preferire le struct per impostazione predefinita e di usare una classe quando ti serve uno stato mutabile condiviso o l'ereditarietà.
Posso esercitarmi con Swift online?
Sì. Apri il playground Swift per eseguire nel browser qualsiasi snippet di questa cheat sheet, senza installare Xcode. Quando vuoi un percorso strutturato, il corso Swift interattivo e gratuito di Coddy ti accompagna passo dopo passo da optional e collezioni fino a struct, classi ed enum.
Questa cheat sheet va bene per chi inizia?
Sì. È organizzata dagli argomenti più comuni (variabili, optional, controllo del flusso) fino a quelli avanzati (closure, struct e classi, enum), così puoi usare le prime sezioni fin dal primo giorno e affrontare il resto man mano che procedi.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Swift con Coddy

INIZIA