0
Applicazione iPhone con
utilizzo di UIKit e CoreData


Giannandrea Castaldi
Software Engineer in Exmachina.ch
giannandrea....
Obiettivo
Obiettivo


Design e pratiche utilizzate nello sviluppo di
            applicazioni iPhone
Obiettivo


 Design e pratiche utilizzate nello sviluppo di
             applicazioni iPhone

Come utilizzare UIKit quasi ...
Obiettivo


  Design e pratiche utilizzate nello sviluppo di
              applicazioni iPhone

 Come utilizzare UIKit qua...
Studio
Studio
Studio
Studio
XCode: IDE di sviluppo
XCode: IDE di sviluppo




                         k!
                         O
IB: Graphical editor per GUI
IB: Graphical editor per GUI




                             n h
                           io it
                       ...
Interface Builder
Interface Builder

     No RAD (Rapid Application
          Development)
Interface Builder

     No RAD (Rapid Application
          Development)

  No RGD (Rapid Gui Development)
Interface Builder

     No RAD (Rapid Application
          Development)

  No RGD (Rapid Gui Development)

     Alla lung...
Interface Builder

   Jonathan Zdziarski: “Many of the
  properties you’re able to set using IB
  are reproducible in code...
CoreData model: Editor Grafico
CoreData model: Editor Grafico




                          an ,
                            ks
                        Th...
CoreData model: da codice
CoreData model: da codice




                        k!
                       O
CoreData

  Core Data Programming Guide by
     Apple: “You typically create the
   managed object model graphically
 usin...
i4twitties




       [Demo e Project overview]
UIKit
UIKit

UIKit fornisce gli oggetti necessari per:
UIKit

UIKit fornisce gli oggetti necessari per:
•eseguire applicazioni grafiche
UIKit

UIKit fornisce gli oggetti necessari per:
•eseguire applicazioni grafiche
•MVC: visualizzare i contenuti sul video
UIKit

UIKit fornisce gli oggetti necessari per:
•eseguire applicazioni grafiche
•MVC: visualizzare i contenuti sul video
•...
UIKit: UIWindow




      [esempio MainWindow]
UIKit: UIView




 [esempio UserCatalogViewController]
UIKit: UIViewController
UIKit: UIViewController

Due responsabilità:
UIKit: UIViewController

Due responsabilità:
•visualizzare il modello sulla vista
UIKit: UIViewController

Due responsabilità:
•visualizzare il modello sulla vista
•far evolvere il modello sulla base dell...
UIKit: UIViewController

Due responsabilità:
•visualizzare il modello sulla vista
•far evolvere il modello sulla base dell...
UIKit: UINavigationController




       [esempio MainWindow]
CoreData

Offre la gestione del ciclo di vita di oggetti
                 persistenti.

La persistenza può essere su file S...
CoreData: NSManagedObject


                             User


                                homeTimeline


           ...
CoreData: NSManagedObject


                                   User
Oggetti del modello
   persistenti                    ...
CoreData: NSManagedObject


                                   User
Oggetti del modello
   persistenti                    ...
NSManagedObjectContext



                       Context                        Context
                            User  ...
NSManagedObjectContext


Legge/scrive/rimuove          Context                        Context
   gli oggetti dalla        ...
NSManagedObjectContext


Legge/scrive/rimuove             Context                        Context
   gli oggetti dalla     ...
NSPersistentStoreCoordinator
                          Context                        Context
                            ...
NSPersistentStoreCoordinator
                                  Context                        Context

Presenta al context...
NSPersistentStoreCoordinator
                                  Context                        Context

Presenta al context...
Data Store
                    Context                        Context
                         User                       ...
Data Store
                              Context                        Context
                                   User   ...
Data Store
                              Context                        Context
                                   User   ...
Data Store
                              Context                        Context
                                   User   ...
Data Store
                              Context                        Context
                                   User   ...
Data Store
                              Context                        Context
                                   User   ...
NSPeristentDocument
                                          Document
                          Context                  ...
NSPeristentDocument

È possibile configurare                          Document
                                 Context    ...
NSPeristentDocument

È possibile configurare                          Document
                                 Context    ...
NSPeristentDocument

È possibile configurare                          Document
                                 Context    ...
Domanda
Domanda

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

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


  NSManagedObjectM...
Domanda

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


  NSManagedObjectM...
Opzione 1: Editor Grafico
Opzione 1: Editor Grafico




                       an ,
                         ks
                     Th No
Opzione 2: Da codice
Opzione 2: Da codice




                       k!
                       O
Opzione 2: Da codice




                            k!
                         O
     [esempio PersistenceStack]
Conclusioni: Principi
Conclusioni: Principi

È fondamentale curare il design:
Conclusioni: Principi

È fondamentale curare il design:
•No alle duplicazioni
Conclusioni: Principi

È fondamentale curare il design:
•No alle duplicazioni
•Alta coesione e basso accoppiamento
  degli...
Conclusioni: Principi

È fondamentale curare il design:
•No alle duplicazioni
•Alta coesione e basso accoppiamento
  degli...
Conclusioni: In pratica
Conclusioni: In pratica

    Nello specifico dell’iPhone SDK:
Conclusioni: In pratica

    Nello specifico dell’iPhone SDK:

Costruzione delle relazioni del MVC nel
                 cod...
Conclusioni: In pratica

    Nello specifico dell’iPhone SDK:

Costruzione delle relazioni del MVC nel
                 cod...
Domande?
Presentazione
Presentazione
Presentazione




      http://www.snoopal.com
Applicazione iPhone con utilizzo di CoreData e UIKit
Upcoming SlideShare
Loading in...5
×

Applicazione iPhone con utilizzo di CoreData e UIKit

2,077

Published on

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

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,077
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide



























































  • Transcript of "Applicazione iPhone con utilizzo di CoreData e UIKit"

    1. 1. Applicazione iPhone con utilizzo di UIKit e CoreData Giannandrea Castaldi Software Engineer in Exmachina.ch giannandrea.castaldi@exmachina.ch http://www.exmachina.ch
    2. 2. Obiettivo
    3. 3. Obiettivo Design e pratiche utilizzate nello sviluppo di applicazioni iPhone
    4. 4. Obiettivo Design e pratiche utilizzate nello sviluppo di applicazioni iPhone Come utilizzare UIKit quasi esclusivamente da codice
    5. 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
    6. 6. Studio
    7. 7. Studio
    8. 8. Studio
    9. 9. Studio
    10. 10. XCode: IDE di sviluppo
    11. 11. XCode: IDE di sviluppo k! O
    12. 12. IB: Graphical editor per GUI
    13. 13. IB: Graphical editor per GUI n h io it ut t w ca bu k, O
    14. 14. Interface Builder
    15. 15. Interface Builder No RAD (Rapid Application Development)
    16. 16. Interface Builder No RAD (Rapid Application Development) No RGD (Rapid Gui Development)
    17. 17. Interface Builder No RAD (Rapid Application Development) No RGD (Rapid Gui Development) Alla lunga paga di più fare direttamente tutto da codice
    18. 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”.
    19. 19. CoreData model: Editor Grafico
    20. 20. CoreData model: Editor Grafico an , ks Th No
    21. 21. CoreData model: da codice
    22. 22. CoreData model: da codice k! O
    23. 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.)”.
    24. 24. i4twitties [Demo e Project overview]
    25. 25. UIKit
    26. 26. UIKit UIKit fornisce gli oggetti necessari per:
    27. 27. UIKit UIKit fornisce gli oggetti necessari per: •eseguire applicazioni grafiche
    28. 28. UIKit UIKit fornisce gli oggetti necessari per: •eseguire applicazioni grafiche •MVC: visualizzare i contenuti sul video
    29. 29. UIKit UIKit fornisce gli oggetti necessari per: •eseguire applicazioni grafiche •MVC: visualizzare i contenuti sul video •MVC: gestire le azioni dell’utente
    30. 30. UIKit: UIWindow [esempio MainWindow]
    31. 31. UIKit: UIView [esempio UserCatalogViewController]
    32. 32. UIKit: UIViewController
    33. 33. UIKit: UIViewController Due responsabilità:
    34. 34. UIKit: UIViewController Due responsabilità: •visualizzare il modello sulla vista
    35. 35. UIKit: UIViewController Due responsabilità: •visualizzare il modello sulla vista •far evolvere il modello sulla base delle azioni dell’utente
    36. 36. 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]
    37. 37. UIKit: UINavigationController [esempio MainWindow]
    38. 38. CoreData Offre la gestione del ciclo di vita di oggetti persistenti. La persistenza può essere su file Sqlite, xml e binari.
    39. 39. CoreData: NSManagedObject User homeTimeline TimeLine timeLine loadedStatus Status Status 1 n
    40. 40. CoreData: NSManagedObject User Oggetti del modello persistenti homeTimeline TimeLine timeLine loadedStatus Status Status 1 n
    41. 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. 42. NSManagedObjectContext Context Context User User homeTimeline homeTimeline TimeLine TimeLine timeLine loadedStatus timeLine loadedStatus Status Status Status Status 1 n 1 n
    43. 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. 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. 45. NSPersistentStoreCoordinator Context Context User User homeTimeline homeTimeline TimeLine TimeLine timeLine loadedStatus timeLine loadedStatus Status Status Status Status 1 n 1 n Coordinator
    46. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
    58. 58. Domanda
    59. 59. Domanda Ok, ma come indico a CoreData quali sono gli oggetti da rendere persistenti?
    60. 60. Domanda Ok, ma come indico a CoreData quali sono gli oggetti da rendere persistenti? NSManagedObjectModel
    61. 61. Domanda Ok, ma come indico a CoreData quali sono gli oggetti da rendere persistenti? NSManagedObjectModel Rappresenta il modello degli oggetti persistenti
    62. 62. Opzione 1: Editor Grafico
    63. 63. Opzione 1: Editor Grafico an , ks Th No
    64. 64. Opzione 2: Da codice
    65. 65. Opzione 2: Da codice k! O
    66. 66. Opzione 2: Da codice k! O [esempio PersistenceStack]
    67. 67. Conclusioni: Principi
    68. 68. Conclusioni: Principi È fondamentale curare il design:
    69. 69. Conclusioni: Principi È fondamentale curare il design: •No alle duplicazioni
    70. 70. Conclusioni: Principi È fondamentale curare il design: •No alle duplicazioni •Alta coesione e basso accoppiamento degli oggetti
    71. 71. Conclusioni: Principi È fondamentale curare il design: •No alle duplicazioni •Alta coesione e basso accoppiamento degli oggetti La flessibilità di Objective-c aiuta
    72. 72. Conclusioni: In pratica
    73. 73. Conclusioni: In pratica Nello specifico dell’iPhone SDK:
    74. 74. Conclusioni: In pratica Nello specifico dell’iPhone SDK: Costruzione delle relazioni del MVC nel codice
    75. 75. Conclusioni: In pratica Nello specifico dell’iPhone SDK: Costruzione delle relazioni del MVC nel codice Costruzione del persistence stack nel codice
    76. 76. Domande?
    77. 77. Presentazione
    78. 78. Presentazione
    79. 79. Presentazione http://www.snoopal.com
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×