Delegate Pattern
Controller, Protocol, View
we use the most to customize the textfield.
textField(_:shouldChangeCharactersInRange: replacementString:)
An array of structs
struct Album { let name:String let image:UIImage let count:Int }
An array of dictionaries
let albums = [ ["name": "Camera Roll", "imageName": "img1", "count": 5], ["name": "Recently Deleted", "imageName": "img2", "count": 0], ]