Partendo da un'applicazione reale viene mostrato:
- come costruire controller e interfaccie grafiche con UIKit direttamente da codice senza l'utilizzo di Interface Builder
- come costruire l'object model e le entity description di CoreData sempre da codice senza l'utilizzo dell'editor grafico
Inoltre verranno illustrati i vantaggi a livello di design di queste scelte
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Applicazione iPhone con utilizzo di CoreData e UIKit
1. Applicazione iPhone con
utilizzo di UIKit e CoreData
Giannandrea Castaldi
Software Engineer in Exmachina.ch
giannandrea.castaldi@exmachina.ch
http://www.exmachina.ch
4. Obiettivo
Design e pratiche utilizzate nello sviluppo di
applicazioni iPhone
Come utilizzare UIKit quasi esclusivamente da
codice
5. Obiettivo
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
16. Interface Builder
No RAD (Rapid Application
Development)
No RGD (Rapid Gui Development)
17. Interface Builder
No RAD (Rapid Application
Development)
No RGD (Rapid Gui Development)
Alla lunga paga di più fare
direttamente tutto da codice
18. 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”.
23. 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.)”.
28. UIKit
UIKit fornisce gli oggetti necessari per:
•eseguire applicazioni grafiche
•MVC: visualizzare i contenuti sul video
29. UIKit
UIKit fornisce gli oggetti necessari per:
•eseguire applicazioni grafiche
•MVC: visualizzare i contenuti sul video
•MVC: gestire le azioni dell’utente
40. CoreData: NSManagedObject
User
Oggetti del modello
persistenti homeTimeline
TimeLine
timeLine loadedStatus
Status
Status 1 n
41. CoreData: NSManagedObject
User
Oggetti del modello
persistenti homeTimeline
TimeLine
Insieme formano un timeLine loadedStatus
grafo di entità e Status 1
Status
n
relazioni
42. NSManagedObjectContext
Context Context
User User
homeTimeline homeTimeline
TimeLine TimeLine
timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
1 n 1 n
43. NSManagedObjectContext
Legge/scrive/rimuove Context Context
gli oggetti dalla User User
persistenza homeTimeline homeTimeline
TimeLine TimeLine
timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
1 n 1 n
44. NSManagedObjectContext
Legge/scrive/rimuove Context Context
gli oggetti dalla User User
persistenza homeTimeline homeTimeline
TimeLine TimeLine
timeLine loadedStatus timeLine loadedStatus
Con un context si Status
1
Status
n
Status
1
Status
n
agisce su sezioni degli
oggetti persistenti
45. NSPersistentStoreCoordinator
Context Context
User User
homeTimeline homeTimeline
TimeLine TimeLine
timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
1 n 1 n
Coordinator
46. NSPersistentStoreCoordinator
Context Context
Presenta al context gli User
homeTimeline
User
homeTimeline
object store sottostanti TimeLine TimeLine
come un’unico store timeLine
Status
loadedStatus
Status
timeLine
Status
loadedStatus
Status
1 n 1 n
Coordinator
47. NSPersistentStoreCoordinator
Context Context
Presenta al context gli User
homeTimeline
User
homeTimeline
object store sottostanti TimeLine TimeLine
come un’unico store timeLine
Status
loadedStatus
Status
timeLine
Status
loadedStatus
Status
1 n 1 n
Un context può creare
un grafo di oggetti
distribuiti su più data Coordinator
store.
48. Data Store
Context Context
User User
homeTimeline homeTimeline
TimeLine TimeLine
timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
1 n 1 n
Coordinator
49. Data Store
Context Context
User User
homeTimeline homeTimeline
Mappa gli oggetti TimeLine TimeLine
persistenti nel file timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
associato
1 n 1 n
Coordinator
50. Data Store
Context Context
User User
homeTimeline homeTimeline
Mappa gli oggetti TimeLine TimeLine
persistenti nel file timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
associato
1 n 1 n
Coordinator
Data
Store
Sqlite
51. Data Store
Context Context
User User
homeTimeline homeTimeline
Mappa gli oggetti TimeLine TimeLine
persistenti nel file timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
associato
1 n 1 n
Coordinator
Data Data
Store Store
Sqlite Sqlite
52. Data Store
Context Context
User User
homeTimeline homeTimeline
Mappa gli oggetti TimeLine TimeLine
persistenti nel file timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
associato
1 n 1 n
Coordinator
Data Data Data
Store Store Store
Sqlite Sqlite XML
53. Data Store
Context Context
User User
homeTimeline homeTimeline
Mappa gli oggetti TimeLine TimeLine
persistenti nel file timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
associato
1 n 1 n
Coordinator
Data Data Data Data
Store Store Store Store
Sqlite Sqlite XML Bin
54. NSPeristentDocument
Document
Context Context
User User
homeTimeline homeTimeline
TimeLine TimeLine
timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
1 n 1 n
Coordinator
Data Data Data Data
Store Store Store Store
Sqlite Sqlite XML Bin
55. NSPeristentDocument
È possibile configurare Document
Context Context
il persistent stack da User User
codice. homeTimeline homeTimeline
TimeLine TimeLine
timeLine loadedStatus timeLine loadedStatus
Status Status Status Status
1 n 1 n
Coordinator
Data Data Data Data
Store Store Store Store
Sqlite Sqlite XML Bin
56. NSPeristentDocument
È possibile configurare Document
Context Context
il persistent stack da User User
codice. homeTimeline homeTimeline
TimeLine TimeLine
timeLine timeLine
Per applicazioni
loadedStatus loadedStatus
Status Status Status Status
1 n 1 n
document-based
NSPeristentDocument Coordinator
Data Data Data Data
Store Store Store Store
Sqlite Sqlite XML Bin
57. NSPeristentDocument
È possibile configurare Document
Context Context
il persistent stack da User User
codice. homeTimeline homeTimeline
TimeLine TimeLine
timeLine timeLine
Per applicazioni
loadedStatus loadedStatus
Status Status Status Status
1 n 1 n
document-based
NSPeristentDocument Coordinator
Data Data Data Data
mapping one-to-one Store Store Store Store
document-data store Sqlite Sqlite XML Bin
59. Domanda
Ok, ma come indico a CoreData quali
sono gli oggetti da rendere
persistenti?
60. Domanda
Ok, ma come indico a CoreData quali
sono gli oggetti da rendere
persistenti?
NSManagedObjectModel
61. Domanda
Ok, ma come indico a CoreData quali
sono gli oggetti da rendere
persistenti?
NSManagedObjectModel
Rappresenta il modello degli oggetti
persistenti
71. Conclusioni: Principi
È fondamentale curare il design:
•No alle duplicazioni
•Alta coesione e basso accoppiamento
degli oggetti
La flessibilità di Objective-c aiuta
74. Conclusioni: In pratica
Nello specifico dell’iPhone SDK:
Costruzione delle relazioni del MVC nel
codice
75. Conclusioni: In pratica
Nello specifico dell’iPhone SDK:
Costruzione delle relazioni del MVC nel
codice
Costruzione del persistence stack nel
codice