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], ]