applicazione iphone con utilizzo di coredata e uikit

80
Applicazione iPhone con utilizzo di UIKit e CoreData Giannandrea Castaldi Software Engineer in Exmachina.ch [email protected] http://www.exmachina.ch

Upload: gcastaldi

Post on 29-Jan-2018

2.272 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Applicazione iPhone con utilizzo di CoreData e UIKit

Applicazione iPhone con utilizzo di UIKit e CoreData

Giannandrea CastaldiSoftware Engineer in [email protected]://www.exmachina.ch

Page 2: Applicazione iPhone con utilizzo di CoreData e UIKit

Obiettivo

Page 3: Applicazione iPhone con utilizzo di CoreData e UIKit

Design e pratiche utilizzate nello sviluppo di applicazioni iPhone

Obiettivo

Page 4: Applicazione iPhone con utilizzo di CoreData e UIKit

Design e pratiche utilizzate nello sviluppo di applicazioni iPhone

Come utilizzare UIKit quasi esclusivamente da codice

Obiettivo

Page 5: Applicazione iPhone con utilizzo di CoreData e UIKit

Design e pratiche utilizzate nello sviluppo di applicazioni iPhone

Come utilizzare UIKit quasi esclusivamente da codice

Come definire il persistent stack di CoreData da codice

Obiettivo

Page 6: Applicazione iPhone con utilizzo di CoreData e UIKit

Studio

Page 7: Applicazione iPhone con utilizzo di CoreData e UIKit

Studio

Page 8: Applicazione iPhone con utilizzo di CoreData e UIKit

Studio

Page 9: Applicazione iPhone con utilizzo di CoreData e UIKit

Studio

Page 10: Applicazione iPhone con utilizzo di CoreData e UIKit

XCode: IDE di sviluppo

Page 11: Applicazione iPhone con utilizzo di CoreData e UIKit

XCode: IDE di sviluppo

Ok!

Page 12: Applicazione iPhone con utilizzo di CoreData e UIKit

IB: Graphical editor per GUI

Page 13: Applicazione iPhone con utilizzo di CoreData e UIKit

IB: Graphical editor per GUI

Ok, bu

t with

cauti

on

Page 14: Applicazione iPhone con utilizzo di CoreData e UIKit

Interface Builder

Page 15: Applicazione iPhone con utilizzo di CoreData e UIKit

Interface Builder

No RAD (Rapid Application Development)

Page 16: Applicazione iPhone con utilizzo di CoreData e UIKit

Interface Builder

No RAD (Rapid Application Development)

No RGD (Rapid Gui Development)

Page 17: Applicazione iPhone con utilizzo di CoreData e UIKit

Interface Builder

No RAD (Rapid Application Development)

No RGD (Rapid Gui Development)

Alla lunga paga di più fare direttamente tutto da codice

Page 18: Applicazione iPhone con utilizzo di CoreData e UIKit

Interface Builder

Jonathan Zdziarski: “Many of the properties you’re able to set using IB are reproducible in code. Think of IB as a GUI for code. While IB supports many of the same characteristics you

can set up, it not support all”.

Page 19: Applicazione iPhone con utilizzo di CoreData e UIKit

CoreData model: Editor Grafico

Page 20: Applicazione iPhone con utilizzo di CoreData e UIKit

CoreData model: Editor Grafico

No,

Than

ks

Page 21: Applicazione iPhone con utilizzo di CoreData e UIKit

CoreData model: da codice

Page 22: Applicazione iPhone con utilizzo di CoreData e UIKit

CoreData model: da codice

Ok!

Page 23: Applicazione iPhone con utilizzo di CoreData e UIKit

CoreData

Core Data Programming Guide by Apple: “You typically create the

managed object model graphically using Xcode's Data Model Design tool.

(If you wish you can construct the model programmatically at runtime.)”.

Page 24: Applicazione iPhone con utilizzo di CoreData e UIKit

i4twitties

[Demo e Project overview]

Page 25: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit

Page 26: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit

UIKit fornisce gli oggetti necessari per:

Page 27: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit

UIKit fornisce gli oggetti necessari per:

•eseguire applicazioni grafiche

Page 28: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit

UIKit fornisce gli oggetti necessari per:

•eseguire applicazioni grafiche

•MVC: visualizzare i contenuti sul video

Page 29: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit

UIKit fornisce gli oggetti necessari per:

•eseguire applicazioni grafiche

•MVC: visualizzare i contenuti sul video

•MVC: gestire le azioni dell’utente

Page 30: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit: UIWindow

[esempio MainWindow]

Page 31: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit: UIView

[esempio UserCatalogViewController]

Page 32: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit: UIViewController

Page 33: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit: UIViewController

Due responsabilità:

Page 34: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit: UIViewController

Due responsabilità:•visualizzare il modello sulla vista

Page 35: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit: UIViewController

Due responsabilità:•visualizzare il modello sulla vista•far evolvere il modello sulla base delle

azioni dell’utente

Page 36: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit: UIViewController

Due responsabilità:•visualizzare il modello sulla vista•far evolvere il modello sulla base delle

azioni dell’utente

[esempio TimeLineViewController con utilizzo di UITableView]

Page 37: Applicazione iPhone con utilizzo di CoreData e UIKit

UIKit: UINavigationController

[esempio MainWindow]

Page 38: Applicazione iPhone con utilizzo di CoreData e UIKit

CoreData

Offre la gestione del ciclo di vita di oggetti persistenti.

La persistenza può essere su file Sqlite, xml e binari.

Page 39: Applicazione iPhone con utilizzo di CoreData e UIKit

CoreData: NSManagedObject

User

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Page 40: Applicazione iPhone con utilizzo di CoreData e UIKit

CoreData: NSManagedObject

User

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Oggetti del modello persistenti

Page 41: Applicazione iPhone con utilizzo di CoreData e UIKit

CoreData: NSManagedObject

User

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Oggetti del modello persistenti

Insieme formano un grafo di entità e

relazioni

Page 42: Applicazione iPhone con utilizzo di CoreData e UIKit

NSManagedObjectContext

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Page 43: Applicazione iPhone con utilizzo di CoreData e UIKit

NSManagedObjectContext

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Legge/scrive/rimuove gli oggetti dalla

persistenza

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Page 44: Applicazione iPhone con utilizzo di CoreData e UIKit

NSManagedObjectContext

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Legge/scrive/rimuove gli oggetti dalla

persistenza

Con un context si agisce su sezioni degli

oggetti persistenti

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Page 45: Applicazione iPhone con utilizzo di CoreData e UIKit

NSPersistentStoreCoordinator

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Page 46: Applicazione iPhone con utilizzo di CoreData e UIKit

NSPersistentStoreCoordinator

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Presenta al context gli object store sottostanti

come un’unico store

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Page 47: Applicazione iPhone con utilizzo di CoreData e UIKit

NSPersistentStoreCoordinator

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Presenta al context gli object store sottostanti

come un’unico store

Un context può creare un grafo di oggetti

distribuiti su più data store.

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Page 48: Applicazione iPhone con utilizzo di CoreData e UIKit

Data Store

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Page 49: Applicazione iPhone con utilizzo di CoreData e UIKit

Data Store

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Mappa gli oggetti persistenti nel file

associato

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Page 50: Applicazione iPhone con utilizzo di CoreData e UIKit

Data Store

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Mappa gli oggetti persistenti nel file

associato

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Data Store

Sqlite

Page 51: Applicazione iPhone con utilizzo di CoreData e UIKit

Data Store

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Mappa gli oggetti persistenti nel file

associato

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Data Store

Sqlite

Data Store

Sqlite

Page 52: Applicazione iPhone con utilizzo di CoreData e UIKit

Data Store

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Mappa gli oggetti persistenti nel file

associato

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Data Store

Sqlite

Data Store

Sqlite

Data Store

XML

Page 53: Applicazione iPhone con utilizzo di CoreData e UIKit

Data Store

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Mappa gli oggetti persistenti nel file

associato

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Data Store

Sqlite

Data Store

Sqlite

Data Store

XML

Data Store

Bin

Page 54: Applicazione iPhone con utilizzo di CoreData e UIKit

Document

NSPeristentDocument

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Data Store

Sqlite

Data Store

Sqlite

Data Store

XML

Data Store

Bin

Page 55: Applicazione iPhone con utilizzo di CoreData e UIKit

Document

NSPeristentDocument

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

È possibile configurare il persistent stack da

codice.

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Data Store

Sqlite

Data Store

Sqlite

Data Store

XML

Data Store

Bin

Page 56: Applicazione iPhone con utilizzo di CoreData e UIKit

Document

NSPeristentDocument

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

È possibile configurare il persistent stack da

codice.

Per applicazioni document-based

NSPeristentDocument

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Data Store

Sqlite

Data Store

Sqlite

Data Store

XML

Data Store

Bin

Page 57: Applicazione iPhone con utilizzo di CoreData e UIKit

Document

NSPeristentDocument

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

È possibile configurare il persistent stack da

codice.

Per applicazioni document-based

NSPeristentDocument

mapping one-to-one document-data store

ContextUser

TimeLine

homeTimeline

timeLine

Statusn

loadedStatus

Status 1

Coordinator

Data Store

Sqlite

Data Store

Sqlite

Data Store

XML

Data Store

Bin

Page 58: Applicazione iPhone con utilizzo di CoreData e UIKit

Domanda

Page 59: Applicazione iPhone con utilizzo di CoreData e UIKit

Domanda

Ok, ma come indico a CoreData quali sono gli oggetti da rendere

persistenti?

Page 60: Applicazione iPhone con utilizzo di CoreData e UIKit

Domanda

Ok, ma come indico a CoreData quali sono gli oggetti da rendere

persistenti?

NSManagedObjectModel

Page 61: Applicazione iPhone con utilizzo di CoreData e UIKit

Domanda

Ok, ma come indico a CoreData quali sono gli oggetti da rendere

persistenti?

NSManagedObjectModel

Rappresenta il modello degli oggetti persistenti

Page 62: Applicazione iPhone con utilizzo di CoreData e UIKit

Opzione 1: Editor Grafico

Page 63: Applicazione iPhone con utilizzo di CoreData e UIKit

Opzione 1: Editor Grafico

No,

Than

ks

Page 64: Applicazione iPhone con utilizzo di CoreData e UIKit

Opzione 2: Da codice

Page 65: Applicazione iPhone con utilizzo di CoreData e UIKit

Opzione 2: Da codice

Ok!

Page 66: Applicazione iPhone con utilizzo di CoreData e UIKit

Opzione 2: Da codice

Ok!

[esempio PersistenceStack]

Page 67: Applicazione iPhone con utilizzo di CoreData e UIKit

Conclusioni: Principi

Page 68: Applicazione iPhone con utilizzo di CoreData e UIKit

Conclusioni: Principi

È fondamentale curare il design:

Page 69: Applicazione iPhone con utilizzo di CoreData e UIKit

Conclusioni: Principi

È fondamentale curare il design:•No alle duplicazioni

Page 70: Applicazione iPhone con utilizzo di CoreData e UIKit

Conclusioni: Principi

È fondamentale curare il design:•No alle duplicazioni•Alta coesione e basso accoppiamento

degli oggetti

Page 71: Applicazione iPhone con utilizzo di CoreData e UIKit

Conclusioni: Principi

È fondamentale curare il design:•No alle duplicazioni•Alta coesione e basso accoppiamento

degli oggetti

La flessibilità di Objective-c aiuta

Page 72: Applicazione iPhone con utilizzo di CoreData e UIKit

Conclusioni: In pratica

Page 73: Applicazione iPhone con utilizzo di CoreData e UIKit

Conclusioni: In pratica

Nello specifico dell’iPhone SDK:

Page 74: Applicazione iPhone con utilizzo di CoreData e UIKit

Conclusioni: In pratica

Nello specifico dell’iPhone SDK:

Costruzione delle relazioni del MVC nel codice

Page 75: Applicazione iPhone con utilizzo di CoreData e UIKit

Conclusioni: In pratica

Nello specifico dell’iPhone SDK:

Costruzione delle relazioni del MVC nel codice

Costruzione del persistence stack nel codice

Page 76: Applicazione iPhone con utilizzo di CoreData e UIKit
Page 77: Applicazione iPhone con utilizzo di CoreData e UIKit

Domande?

Page 78: Applicazione iPhone con utilizzo di CoreData e UIKit

Presentazione

Page 79: Applicazione iPhone con utilizzo di CoreData e UIKit

Presentazione

Page 80: Applicazione iPhone con utilizzo di CoreData e UIKit

Presentazione

http://www.snoopal.com