MVVM-C
In Practice
Steve Scott (Scotty)
@macdevnet
Slide 2
Slide 2 text
Listen Carefully!
Slide 3
Slide 3 text
• Code Sharing Between iOS and OSX apps
• Good Test Coverage
• Easy To Test
• Flexible
Goals
Slide 4
Slide 4 text
Model
Controller
View
Slide 5
Slide 5 text
Model
?
Controller
UIViewController
View
UIView
Slide 6
Slide 6 text
Model
?
View Model
?
View
UIView
Controller
UIViewController
Slide 7
Slide 7 text
Model
?
View Model
?
View
UIView
Controller
UIViewController
Presentation
User Input
Business
Logic
Data
C.R.U.D
Slide 8
Slide 8 text
Model
?
View Model
?
View
UIView
Controller
UIViewController
Business
Logic
Data
C.R.U.D
Coordinator
Navigation / Flow
Presentation
User Input
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
Protocols
Slide 14
Slide 14 text
View
UIView
Controller
UIViewController
Views
Slide 15
Slide 15 text
View
UIView
Controller
UIViewController
View Model
Views
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
View
UIView
Controller
UIViewController
View Model
Views
Immutable?
Slide 20
Slide 20 text
View
UIView
Controller
UIViewController
View Model
Protocol
Views
Property
Delegate
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
View Model
View Models
Slide 24
Slide 24 text
• Get Data From a Model
• Send Data To a Model
• Provide a Data Interface For Views
• Inform View of Data Changes
• Business Logic
• Communicate State to Coordinator
View Model
View Models
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
Model
Models
Slide 29
Slide 29 text
• Handle Data Access
• Handle Saving Data
• Uses functions not properties
• All functions return data in a completion
handler
• Always assume to be asynchronous
Model
Models