SlideShare a Scribd company logo
1 of 29
Download to read offline
FROM A TO C(HECK-IN):
IOS E SWIFT LAB
Paolo Musolino
Erik Peruzzi
26 Settembre 2015 - Todi AppyDays
Erik Peruzzi
iOS Software Engineer
Officina 31
Twitter: @ErikPeruzzi
email: erik.peruzzi@gmail.com
medium: https://medium.com/
@officina31/
Paolo Musolino
iOS Software Engineer
IQUII srl
Twitter: @pmusolino
email: pmusolino@gmail.com
Programma della giornata
• Introduzione al mobile
• Linee guida e risorse utili
• Introduzione alla programmazione iOS
con Swift
• Creazione di un’app
Più di 85 milioni di download
dal 2008
70% di proventi da App Store
Prezzo medio app:
(iOS) $1.5
(Android) $1
App Store
10 modelli iPhone dal 2007 ad oggi
4 modelli iPad
4 risoluzioni + retina
Distribuzione versioni iOS
• Apple iOS ha poca
frammentazione dei sistemi
operativi
• Sviluppando per iOS 7 e
successivi viene coperto
oltre il 98% dei dispositivi
Riferimenti utili
• Apple developer program https://
developer.apple.com/programs/ios/
• iOS Human Interface Guidelines https://
developer.apple.com/library/ios/
documentation/UserExperience/Conceptual/
MobileHIG/AppIcons.html#//apple_ref/doc/uid/
TP40006556-CH19-SW1
• Elementi UI https://developer.apple.com/
library/ios/documentation/UserExperience/
Conceptual/UIKitUICatalog/index.html#//
apple_ref/doc/uid/TP40012857-UIView-SW1
• Info grafiche utili http://
iosdesign.ivomynttinen.com
• Tutorials http://www.raywenderlich.com
http://www.appcoda.com
• Google
Programmazione iOS
• Il linguaggio usato è Objective-C o Swift
• Si usa per sviluppare per iOS ed OSX (iPhone, iPad,
Mac)
• Linguaggio ad oggetti, simile a C++ e java
• Implementa il pattern MVC model-view-controller
• Dal 2014 è possibile sviluppare anche in Swift
• Un Oggetto è un’entità, appartenente ad una classe
con un proprio stato e comportamento
• Una Classe è una descrizione astratta, un prototipo che
definisce il comportamento e le proprietà di un oggetto
• Normalmente si definisce una classe e si istanzia uno o
più oggetti relativi ad essa
Swift.
A modern programming
language that is safe, fast,
and interactive.
Playground
Sicuro
Veloce
Le variabili vengono gestite in maniera ottimale grazie agli
optionals
var optionalString: String?
Interoperabilità con Obj-C
Possiamo usare Swift e Objective C nello stesso progetto
let maximumNumberOfLoginAttempts = 10
Dichiarazione di una variabile
var currentLoginAttempt = 0
let è usato per dichiarare costanti
var è usato per dichiarare variabili
Dichiarazione di una variabile
var x = 0.0, y = 0.0, z = 0.0
var welcomeMessage: String
welcomeMessage = "Hello"
si possono dichiarare variabili multiple
si può dichiarare il tipo di variabile
Dichiarazione di una variabile
var friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
// friendlyWelcome is now "Bonjour!"
una variabile consente di cambiare il suo valore
una costante non consente di cambiare il suo valore
let languageName = "Swift"
languageName = "Swift++"
// this is a compile-time error - languageName
cannot be changed
Optionals
var optionalInt :Int?
gli optionals gestiscono l’assenza di una variabile
si usano in situazioni dove un valore può essere assente
Usare gli optionals è simile ad usare un puntatore a nil in Obj-C
ma funzionano per qualsiasi tipo di dato, non soltanto per le classi
extension String {
var banana : String {
let shortName = String(characters.dropFirst(1))
return "(self) (self) Bo B(shortName) Banana Fana Fo F
(shortName)"
}
}
let bananaName = "Jimmy".banana
// "Jimmy Jimmy Bo Bimmy Banana Fana Fo Fimmy"
Estensioni
func sayHelloWorld() -> a href="" String /a {
return "hello, world"
}
print(sayHelloWorld())
// prints "hello, world"
Metodi
Funzioni semplici
func sayHello(personName: String) -> String {
let greeting = "Hello, " + personName + "!"
return greeting
}
Metodi
print(sayHello("Anna"))
// prints "Hello, Anna!"
Funzione con parametro di ingresso e uscita
Metodi
func sayHelloAgain(personName: String) -> String {
return "Hello again, " + personName + "!"
}
print(sayHelloAgain("Anna"))
// prints "Hello again, Anna!"
func sayHello(personName: String, alreadyGreeted:Bool)
-> String{
if alreadyGreeted {
return sayHelloAgain(personName)
}
else {
return sayHello(personName)
}
}
print(sayHello("Tim", alreadyGreeted: true))
// prints "Hello again, Tim!"
Metodi
Funzioni con parametri di ingresso multipli
iOS implementa il pattern MVC (Model-View-Controller)
Modello: oggetto che controlla i dati - Dati
Controllore: intermediario tra modello e vista - Logica
Vista: presenta all’utente i dati del modello - Interfaccia utente
• L’IDE usato è Xcode
• Scaricabile direttamente dallo store
• Ha tutti gli strumenti per creare un’app e
inviarla allo store
• Integra Interface Builder per creare
interfacce grafiche di tipo drag e drop
To the Code!
Where to go from here
• Inizia a sviluppare in Swift - Tutorial: Start Developing iOS Apps (Swift)
• Registrarsi come sviluppatore: Managing Accounts
• Imparare a creare interfacce mobile: iOS Human Interface Guidelines, Auto Layout
Guide
• Imparare Objective-C: Programming with Objective-C
• Imparare a sviluppare in Swift: The Swift Programming Language
• Imparare a sviluppare grandi App: App Programming Guide for iOS
• Conoscere le tecnologie disponibili: iOS Technology Overview
• Documentazione generale: Finding Information
• Debug e testa la tua app: Debug Your App
• Distribuisci la tua app: App Distribution Guide

More Related Content

Similar to FROM A TO C(HECK-IN): iOS e Swift Lab

Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Todi Appy Days
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchPaolo Musolino
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaDario Rusignuolo
 
Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a pythonEnrico La Sala
 
Xcode - Just do it
Xcode - Just do itXcode - Just do it
Xcode - Just do itpragmamark
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.jsMichele Capra
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con ScalaFranco Lombardo
 
Tech webinar: iOS Get Started
Tech webinar: iOS Get StartedTech webinar: iOS Get Started
Tech webinar: iOS Get StartedCodemotion
 
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2016
 
Mocking Objects Practices
Mocking Objects PracticesMocking Objects Practices
Mocking Objects PracticesGrUSP
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOSGaspare Novara
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitalelostrettodigitale
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java BaseK-Tech Formazione
 
Universal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampaniaUniversal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampaniaEmanuele Garofalo
 
Al telefono con Adhearsion e Ruby
Al telefono con Adhearsion e RubyAl telefono con Adhearsion e Ruby
Al telefono con Adhearsion e RubyLuca Pradovera
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ CodeDaniele Mondello
 
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...Codemotion
 

Similar to FROM A TO C(HECK-IN): iOS e Swift Lab (20)

Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple Watch
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a python
 
Hexagonal architecture ita
Hexagonal architecture itaHexagonal architecture ita
Hexagonal architecture ita
 
Xcode - Just do it
Xcode - Just do itXcode - Just do it
Xcode - Just do it
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con Scala
 
Rest sdk
Rest sdkRest sdk
Rest sdk
 
Tech webinar: iOS Get Started
Tech webinar: iOS Get StartedTech webinar: iOS Get Started
Tech webinar: iOS Get Started
 
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
 
Mocking Objects Practices
Mocking Objects PracticesMocking Objects Practices
Mocking Objects Practices
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOS
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitale
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java Base
 
Universal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampaniaUniversal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampania
 
Al telefono con Adhearsion e Ruby
Al telefono con Adhearsion e RubyAl telefono con Adhearsion e Ruby
Al telefono con Adhearsion e Ruby
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
 

FROM A TO C(HECK-IN): iOS e Swift Lab

  • 1. FROM A TO C(HECK-IN): IOS E SWIFT LAB Paolo Musolino Erik Peruzzi 26 Settembre 2015 - Todi AppyDays
  • 2. Erik Peruzzi iOS Software Engineer Officina 31 Twitter: @ErikPeruzzi email: erik.peruzzi@gmail.com medium: https://medium.com/ @officina31/ Paolo Musolino iOS Software Engineer IQUII srl Twitter: @pmusolino email: pmusolino@gmail.com
  • 3. Programma della giornata • Introduzione al mobile • Linee guida e risorse utili • Introduzione alla programmazione iOS con Swift • Creazione di un’app
  • 4. Più di 85 milioni di download dal 2008 70% di proventi da App Store Prezzo medio app: (iOS) $1.5 (Android) $1 App Store
  • 5. 10 modelli iPhone dal 2007 ad oggi 4 modelli iPad 4 risoluzioni + retina
  • 6. Distribuzione versioni iOS • Apple iOS ha poca frammentazione dei sistemi operativi • Sviluppando per iOS 7 e successivi viene coperto oltre il 98% dei dispositivi
  • 7. Riferimenti utili • Apple developer program https:// developer.apple.com/programs/ios/ • iOS Human Interface Guidelines https:// developer.apple.com/library/ios/ documentation/UserExperience/Conceptual/ MobileHIG/AppIcons.html#//apple_ref/doc/uid/ TP40006556-CH19-SW1 • Elementi UI https://developer.apple.com/ library/ios/documentation/UserExperience/ Conceptual/UIKitUICatalog/index.html#// apple_ref/doc/uid/TP40012857-UIView-SW1 • Info grafiche utili http:// iosdesign.ivomynttinen.com • Tutorials http://www.raywenderlich.com http://www.appcoda.com • Google
  • 8. Programmazione iOS • Il linguaggio usato è Objective-C o Swift • Si usa per sviluppare per iOS ed OSX (iPhone, iPad, Mac) • Linguaggio ad oggetti, simile a C++ e java • Implementa il pattern MVC model-view-controller • Dal 2014 è possibile sviluppare anche in Swift
  • 9. • Un Oggetto è un’entità, appartenente ad una classe con un proprio stato e comportamento • Una Classe è una descrizione astratta, un prototipo che definisce il comportamento e le proprietà di un oggetto • Normalmente si definisce una classe e si istanzia uno o più oggetti relativi ad essa
  • 10.
  • 11. Swift. A modern programming language that is safe, fast, and interactive.
  • 13.
  • 14. Sicuro Veloce Le variabili vengono gestite in maniera ottimale grazie agli optionals var optionalString: String?
  • 15. Interoperabilità con Obj-C Possiamo usare Swift e Objective C nello stesso progetto
  • 16. let maximumNumberOfLoginAttempts = 10 Dichiarazione di una variabile var currentLoginAttempt = 0 let è usato per dichiarare costanti var è usato per dichiarare variabili
  • 17. Dichiarazione di una variabile var x = 0.0, y = 0.0, z = 0.0 var welcomeMessage: String welcomeMessage = "Hello" si possono dichiarare variabili multiple si può dichiarare il tipo di variabile
  • 18. Dichiarazione di una variabile var friendlyWelcome = "Hello!" friendlyWelcome = "Bonjour!" // friendlyWelcome is now "Bonjour!" una variabile consente di cambiare il suo valore una costante non consente di cambiare il suo valore let languageName = "Swift" languageName = "Swift++" // this is a compile-time error - languageName cannot be changed
  • 19. Optionals var optionalInt :Int? gli optionals gestiscono l’assenza di una variabile si usano in situazioni dove un valore può essere assente Usare gli optionals è simile ad usare un puntatore a nil in Obj-C ma funzionano per qualsiasi tipo di dato, non soltanto per le classi
  • 20. extension String { var banana : String { let shortName = String(characters.dropFirst(1)) return "(self) (self) Bo B(shortName) Banana Fana Fo F (shortName)" } } let bananaName = "Jimmy".banana // "Jimmy Jimmy Bo Bimmy Banana Fana Fo Fimmy" Estensioni
  • 21. func sayHelloWorld() -> a href="" String /a { return "hello, world" } print(sayHelloWorld()) // prints "hello, world" Metodi Funzioni semplici
  • 22. func sayHello(personName: String) -> String { let greeting = "Hello, " + personName + "!" return greeting } Metodi print(sayHello("Anna")) // prints "Hello, Anna!" Funzione con parametro di ingresso e uscita
  • 23. Metodi func sayHelloAgain(personName: String) -> String { return "Hello again, " + personName + "!" } print(sayHelloAgain("Anna")) // prints "Hello again, Anna!"
  • 24. func sayHello(personName: String, alreadyGreeted:Bool) -> String{ if alreadyGreeted { return sayHelloAgain(personName) } else { return sayHello(personName) } } print(sayHello("Tim", alreadyGreeted: true)) // prints "Hello again, Tim!" Metodi Funzioni con parametri di ingresso multipli
  • 25. iOS implementa il pattern MVC (Model-View-Controller) Modello: oggetto che controlla i dati - Dati Controllore: intermediario tra modello e vista - Logica Vista: presenta all’utente i dati del modello - Interfaccia utente
  • 26. • L’IDE usato è Xcode • Scaricabile direttamente dallo store • Ha tutti gli strumenti per creare un’app e inviarla allo store • Integra Interface Builder per creare interfacce grafiche di tipo drag e drop
  • 27.
  • 29. Where to go from here • Inizia a sviluppare in Swift - Tutorial: Start Developing iOS Apps (Swift) • Registrarsi come sviluppatore: Managing Accounts • Imparare a creare interfacce mobile: iOS Human Interface Guidelines, Auto Layout Guide • Imparare Objective-C: Programming with Objective-C • Imparare a sviluppare in Swift: The Swift Programming Language • Imparare a sviluppare grandi App: App Programming Guide for iOS • Conoscere le tecnologie disponibili: iOS Technology Overview • Documentazione generale: Finding Information • Debug e testa la tua app: Debug Your App • Distribuisci la tua app: App Distribution Guide