├── .gitignore ├── Unit 4 ├── 4.4 Scroll Views │ ├── ISpy │ │ ├── ISpy │ │ │ └── Assets.xcassets │ │ │ │ ├── Contents.json │ │ │ │ └── mountain.imageset │ │ │ │ ├── mountain.jpg │ │ │ │ └── Contents.json │ │ ├── ISpy.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ ├── xcuserdata │ │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── xcschemes │ │ │ │ └── xcschememanagement.plist │ │ ├── ISpyTests │ │ │ └── Info.plist │ │ └── ISpyUITests │ │ │ └── Info.plist │ └── ScrollingForm │ │ ├── ScrollingForm │ │ └── Assets.xcassets │ │ │ └── Contents.json │ │ ├── ScrollingForm.xcodeproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ ├── ScrollingFormTests │ │ └── Info.plist │ │ └── ScrollingFormUITests │ │ └── Info.plist ├── 4.5 Table Views │ ├── Meal Tracker │ │ ├── Meal Tracker │ │ │ ├── Assets.xcassets │ │ │ │ └── Contents.json │ │ │ ├── Meal.swift │ │ │ ├── Food.swift │ │ │ └── ViewController.swift │ │ ├── Meal Tracker.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ ├── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── xcuserdata │ │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── xcschemes │ │ │ │ └── xcschememanagement.plist │ │ ├── Meal TrackerTests │ │ │ └── Info.plist │ │ └── Meal TrackerUITests │ │ │ └── Info.plist │ └── EmojiDictionary │ │ ├── EmojiDictionary │ │ ├── Assets.xcassets │ │ │ └── Contents.json │ │ └── Emoji.swift │ │ ├── EmojiDictionary.xcodeproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ ├── EmojiDictionaryTests │ │ └── Info.plist │ │ └── EmojiDictionaryUITests │ │ └── Info.plist ├── 4.7 Saving Data │ ├── EmojiDictionary │ │ ├── EmojiDictionary │ │ │ └── Assets.xcassets │ │ │ │ └── Contents.json │ │ ├── EmojiDictionary.xcodeproj │ │ │ ├── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ │ ├── xcdebugger │ │ │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ │ │ └── xcschemes │ │ │ │ │ └── xcschememanagement.plist │ │ │ └── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ ├── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ ├── EmojiDictionaryTests │ │ │ └── Info.plist │ │ └── EmojiDictionaryUITests │ │ │ └── Info.plist │ └── PersistencePlayground.playground │ │ └── contents.xcplayground ├── 4.2 App Anatomy and Life Cycle │ ├── AppEventCount │ │ ├── AppEventCount │ │ │ └── Assets.xcassets │ │ │ │ └── Contents.json │ │ └── AppEventCount.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ └── AppLifeCycle │ │ ├── AppLifeCycle │ │ ├── Assets.xcassets │ │ │ └── Contents.json │ │ └── ViewController.swift │ │ └── AppLifeCycle.xcodeproj │ │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── 4.6 Intermediate Table Views │ ├── EmojiDictionary │ │ ├── EmojiDictionary │ │ │ ├── Assets.xcassets │ │ │ │ └── Contents.json │ │ │ └── Emoji.swift │ │ ├── EmojiDictionary.xcodeproj │ │ │ ├── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ │ ├── xcdebugger │ │ │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ │ │ └── xcschemes │ │ │ │ │ └── xcschememanagement.plist │ │ │ └── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ ├── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ ├── EmojiDictionaryTests │ │ │ └── Info.plist │ │ └── EmojiDictionaryUITests │ │ │ └── Info.plist │ └── FavoriteBook │ │ └── FavoriteBooks.xcodeproj │ │ ├── project.xcworkspace │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── contents.xcworkspacedata │ │ └── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── 4.9 Building Complex Input Screens │ ├── HotelManzana │ │ ├── HotelManzana │ │ │ └── Assets.xcassets │ │ │ │ └── Contents.json │ │ ├── HotelManzana.xcodeproj │ │ │ ├── xcuserdata │ │ │ │ └── michael.xcuserdatad │ │ │ │ │ ├── xcdebugger │ │ │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ │ │ └── xcschemes │ │ │ │ │ └── xcschememanagement.plist │ │ │ └── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ ├── xcuserdata │ │ │ │ └── michael.xcuserdatad │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── HotelManzanaTests │ │ │ └── Info.plist │ │ └── HotelManzanaUITests │ │ │ └── Info.plist │ └── EmployeeRoster │ │ ├── EmployeeRoster.xcodeproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcuserdata │ │ │ │ ├── owen.xcuserdatad │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ │ └── michael.xcuserdatad │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ ├── owen.xcuserdatad │ │ │ └── xcschemes │ │ │ │ └── xcschememanagement.plist │ │ │ └── michael.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── EmployeeRoster │ │ └── Employee.swift ├── 4.8 System View Controllers │ ├── SystemViewControllers │ │ ├── SystemViewControllers │ │ │ └── Assets.xcassets │ │ │ │ ├── Contents.json │ │ │ │ └── download.imageset │ │ │ │ ├── download.jpg │ │ │ │ └── Contents.json │ │ └── SystemViewControllers.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcuserdata │ │ │ │ └── michael.xcuserdatad │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ └── michael.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ └── HomeFurniture │ │ ├── Room.swift │ │ ├── HomeFurniture.xcodeproj │ │ ├── project.xcworkspace │ │ │ ├── xcuserdata │ │ │ │ └── michael.xcuserdatad │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ ├── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── michael.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── Furniture.swift ├── 4.1 Protocols │ ├── exercise-1.playground │ │ └── contents.xcplayground │ ├── exercise-2.playground │ │ └── contents.xcplayground │ ├── exercise-3.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-4.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-5.playground │ │ ├── contents.xcplayground │ │ └── playground.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── Lab - Protocols.playground │ │ ├── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ ├── calebhicks.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── contents.xcplayground └── 4.3 Model View Controller │ └── FavoriteAthlete │ ├── FavoriteAthlete.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ ├── owen.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ ├── owen.xcuserdatad │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── michael.westerbyibm.com.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist │ └── FavoriteAthlete │ └── Athlete.swift ├── Unit 2 ├── 2.8 Displaying Data │ └── Hello │ │ ├── Hello │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ └── IMG_0897.imageset │ │ │ │ ├── IMG_0897.jpg │ │ │ │ └── Contents.json │ │ └── ViewController.swift │ │ ├── Hello.xcodeproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ ├── HelloTests │ │ └── Info.plist │ │ └── HelloUITests │ │ └── Info.plist ├── 2.10 Auto Layout and Stack Views │ ├── Calculator │ │ ├── Calculator │ │ │ ├── Assets.xcassets │ │ │ │ └── Contents.json │ │ │ └── ViewController.swift │ │ └── Calculator.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ └── AutoLayoutPractice │ │ ├── AutoLayoutPractice │ │ ├── Assets.xcassets │ │ │ └── Contents.json │ │ └── ViewController.swift │ │ └── AutoLayoutPractice.xcodeproj │ │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── 2.9 Controls in Action │ └── CommonInputControls │ │ ├── CommonInputControls │ │ └── Assets.xcassets │ │ │ └── Contents.json │ │ └── CommonInputControls.xcodeproj │ │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── 2.6 Loops │ ├── exercise-1.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-2.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-3.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-4.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-5.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-6.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ └── Lab - Loops.playground │ │ ├── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ └── calebhicks.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── Pages │ │ ├── 3. Exercise - While Loops.xcplaygroundpage │ │ │ └── Contents.swift │ │ └── 1. Exercise - For-In Loops.xcplaygroundpage │ │ │ └── Contents.swift │ │ └── contents.xcplayground ├── 2.2 Functions │ ├── exercise-1.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-2.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-3.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-4.playground │ │ └── contents.xcplayground │ ├── exercise-5.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-6.playground │ │ └── contents.xcplayground │ └── Lab - Functions.playground │ │ ├── contents.xcplayground │ │ └── Pages │ │ ├── 5. Exercise - Return Values.xcplaygroundpage │ │ └── Contents.swift │ │ └── 1. Exercise - Create Functions.xcplaygroundpage │ │ └── Contents.swift ├── 2.3 Structures │ ├── exercise-1.playground │ │ └── contents.xcplayground │ ├── exercise-10.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-2.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-3.playground │ │ └── contents.xcplayground │ ├── exercise-4.playground │ │ └── contents.xcplayground │ ├── exercise-5.playground │ │ └── contents.xcplayground │ ├── exercise-6.playground │ │ ├── contents.xcplayground │ │ ├── playground.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── Contents.swift │ ├── exercise-7.playground │ │ ├── contents.xcplayground │ │ └── playground.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── exercise-8.playground │ │ └── contents.xcplayground │ ├── exercise-9.playground │ │ ├── contents.xcplayground │ │ ├── playground.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── Contents.swift │ └── Lab - Structures.playground │ │ └── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── 2.5 Collections │ ├── exercise-1.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-2.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-3.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-4.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ └── Lab - Collections.playground │ │ ├── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── calebhicks.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── contents.xcplayground ├── 2.4 Classes, Inheritance │ ├── exercise-1.playground │ │ └── contents.xcplayground │ ├── exercise-2.playground │ │ └── contents.xcplayground │ ├── exercise-3.playground │ │ └── contents.xcplayground │ ├── exercise-4.playground │ │ └── contents.xcplayground │ └── Lab - Classes.playground │ │ ├── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ ├── calebhicks.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── contents.xcplayground └── 2.1 Strings │ └── Lab - Strings.playground │ ├── playground.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── michael.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ ├── xcuserdata │ └── michael.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist │ └── contents.xcplayground ├── Unit 5 ├── 5.3 Practical Animation │ ├── Contest │ │ ├── Contest │ │ │ └── Assets.xcassets │ │ │ │ └── Contents.json │ │ ├── Contest.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ ├── xcuserdata │ │ │ │ │ └── michael.xcuserdatad │ │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ │ └── michael.xcuserdatad │ │ │ │ └── xcschemes │ │ │ │ └── xcschememanagement.plist │ │ ├── ContestTests │ │ │ └── Info.plist │ │ └── ContestUITests │ │ │ └── Info.plist │ ├── MusicWireframe │ │ ├── MusicWireframe │ │ │ └── Assets.xcassets │ │ │ │ ├── Contents.json │ │ │ │ ├── play.imageset │ │ │ │ ├── play.png │ │ │ │ ├── play@2x.png │ │ │ │ ├── play@3x.png │ │ │ │ └── Contents.json │ │ │ │ ├── pause.imageset │ │ │ │ ├── pause.png │ │ │ │ ├── pause@2x.png │ │ │ │ ├── pause@3x.png │ │ │ │ └── Contents.json │ │ │ │ ├── forward.imageset │ │ │ │ ├── forward.png │ │ │ │ ├── forward@2x.png │ │ │ │ ├── forward@3x.png │ │ │ │ └── Contents.json │ │ │ │ └── reverse.imageset │ │ │ │ ├── reverse.png │ │ │ │ ├── reverse@2x.png │ │ │ │ ├── reverse@3x.png │ │ │ │ └── Contents.json │ │ ├── MusicWireframe.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ ├── xcuserdata │ │ │ │ │ └── michael.xcuserdatad │ │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ │ └── michael.xcuserdatad │ │ │ │ └── xcschemes │ │ │ │ └── xcschememanagement.plist │ │ ├── MusicWireframeTests │ │ │ └── Info.plist │ │ └── MusicWireframeUITests │ │ │ └── Info.plist │ └── FlyingSquares.playground │ │ ├── timeline.xctimeline │ │ └── contents.xcplayground ├── 5.6 Working with the Web - Concurrency │ ├── SpacePhoto │ │ ├── SpacePhoto │ │ │ ├── Assets.xcassets │ │ │ │ └── Contents.json │ │ │ └── URL+Helpers.swift │ │ ├── SpacePhoto.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ ├── xcuserdata │ │ │ │ │ └── michael.xcuserdatad │ │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ │ └── michael.xcuserdatad │ │ │ │ └── xcschemes │ │ │ │ └── xcschememanagement.plist │ │ ├── SpacePhotoTests │ │ │ └── Info.plist │ │ └── SpacePhotoUITests │ │ │ └── Info.plist │ └── iTunesSearch │ │ ├── iTunesSearch │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ └── gray.imageset │ │ │ │ ├── Solid_gray.png │ │ │ │ └── Contents.json │ │ ├── iTunesSearch.playground │ │ │ └── contents.xcplayground │ │ └── URL+Helpers.swift │ │ └── iTunesSearch.xcodeproj │ │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ └── michael.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ └── michael.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── 5.1 Closures │ ├── exercise-1.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-2.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ ├── exercise-3.playground │ │ ├── contents.xcplayground │ │ └── Contents.swift │ └── Lab - Closures.playground │ │ ├── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ ├── calebhicks.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── contents.xcplayground │ │ └── Pages │ │ └── 1. Exercise - Create Closures.xcplaygroundpage │ │ └── Contents.swift ├── 5.2 Extensions │ ├── exercise-1.playground │ │ └── contents.xcplayground │ ├── exercise-2.playground │ │ └── contents.xcplayground │ └── Lab - Extensions.playground │ │ ├── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ ├── calebhicks.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── contents.xcplayground ├── 5.5 Working with the Web - Decoding JSON │ ├── iTunes Search.playground │ │ ├── playground.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcuserdata │ │ │ │ └── michael.xcuserdatad │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── contents.xcplayground │ └── Working with the Web.playground │ │ ├── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ └── michael.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── contents.xcplayground └── 5.4 Working with the Web - HTTP and URL Session │ ├── iTunes Search.playground │ └── contents.xcplayground │ └── Working with the Web.playground │ └── contents.xcplayground ├── Unit 1 ├── 1.1 Introduction to Swift and Playgrounds │ ├── Hello, world!.playground │ │ ├── Contents.swift │ │ ├── playground.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcuserdata │ │ │ │ └── michael.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── contents.xcplayground │ └── Lab - Introduction.playground │ │ ├── contents.xcplayground │ │ ├── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── michael.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ └── michael.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── 1.8 Interface Builder Basics │ ├── IBBasics │ │ ├── IBBasics │ │ │ ├── Assets.xcassets │ │ │ │ └── Contents.json │ │ │ └── ViewController.swift │ │ └── IBBasics.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ └── InterfaceBuilderBasics │ │ ├── InterfaceBuilderBasics │ │ ├── Assets.xcassets │ │ │ └── Contents.json │ │ └── ViewController.swift │ │ └── InterfaceBuilderBasics.xcodeproj │ │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── 1.3 Operators │ └── Lab - Operators.playground │ │ ├── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── michael.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ ├── xcuserdata │ │ └── michael.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── contents.xcplayground ├── 1.4 Control Flow │ └── Lab - Control Flow.playground │ │ ├── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── michael.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ ├── Pages │ │ └── 8. Exercise - Ternary Operator.xcplaygroundpage │ │ │ └── Contents.swift │ │ ├── xcuserdata │ │ └── michael.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── contents.xcplayground └── 1.2 Constants, Variables and Data Types │ └── Lab - Constants and Variables.playground │ ├── playground.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── michael.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ ├── xcuserdata │ └── michael.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist │ └── Pages │ └── 2. App Exercise - Step Goal.xcplaygroundpage │ └── Contents.swift └── Unit 3 ├── 3.7 Tab Bar Controllers └── RainbowTabs │ ├── RainbowTabs │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── B.imageset │ │ │ ├── B.pdf │ │ │ └── Contents.json │ │ ├── G.imageset │ │ │ ├── G.pdf │ │ │ └── Contents.json │ │ ├── O.imageset │ │ │ ├── O.pdf │ │ │ └── Contents.json │ │ ├── R.imageset │ │ │ ├── R.pdf │ │ │ └── Contents.json │ │ ├── Y.imageset │ │ │ ├── Y.pdf │ │ │ └── Contents.json │ │ ├── B Selected.imageset │ │ │ ├── B Selected.pdf │ │ │ └── Contents.json │ │ ├── G Selected.imageset │ │ │ ├── G Selected.pdf │ │ │ └── Contents.json │ │ ├── O Selected.imageset │ │ │ ├── O Selected.pdf │ │ │ └── Contents.json │ │ ├── R Selected.imageset │ │ │ ├── R Selected.pdf │ │ │ └── Contents.json │ │ └── Y Selected.imageset │ │ │ ├── Y Selected.pdf │ │ │ └── Contents.json │ └── RedViewController.swift │ └── RainbowTabs.xcodeproj │ ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ └── michael.westerbyibm.com.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── 3.8 View Controller Life Cycle ├── LifeCycle │ ├── LifeCycle │ │ └── Assets.xcassets │ │ │ └── Contents.json │ └── LifeCycle.xcodeproj │ │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist └── OrderOfEvents │ ├── OrderOfEvents │ ├── Assets.xcassets │ │ └── Contents.json │ └── ViewController.swift │ └── OrderOfEvents.xcodeproj │ ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ └── michael.westerbyibm.com.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── 3.6 Segues and Navigation Controllers └── TrafficSegues │ ├── TrafficSegues │ └── Assets.xcassets │ │ └── Contents.json │ └── TrafficSegues.xcodeproj │ ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ └── michael.westerbyibm.com.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── 3.9 Building Simple Workflows └── Pizza Delivery Lab.png ├── 3.1 Optionals ├── exercise-1.playground │ ├── Contents.swift │ └── contents.xcplayground ├── exercise-2.playground │ ├── contents.xcplayground │ └── Contents.swift ├── exercise-3.playground │ └── contents.xcplayground ├── exercise-4.playground │ ├── contents.xcplayground │ └── Contents.swift ├── exercise-5.playground │ └── contents.xcplayground ├── exercise-6.playground │ ├── contents.xcplayground │ └── Contents.swift └── Lab - Optionals.playground │ ├── playground.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcuserdata │ │ └── calebhicks.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── contents.xcplayground ├── 3.3 Guard ├── exercise-1.playground │ ├── contents.xcplayground │ └── playground.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── exercise-2.playground │ └── contents.xcplayground └── Lab - Guard.playground │ ├── playground.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcuserdata │ │ ├── calebhicks.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── contents.xcplayground ├── 3.5 Enumerations ├── exercise-1.playground │ └── contents.xcplayground ├── exercise-2.playground │ └── contents.xcplayground └── Lab - Enumerations.playground │ ├── playground.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcuserdata │ │ ├── calebhicks.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── contents.xcplayground ├── 3.2 Type Casting and Inspection ├── exercise-1.playground │ └── contents.xcplayground ├── exercise-2.playground │ └── contents.xcplayground └── Lab - Type Casting.playground │ ├── playground.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcuserdata │ │ ├── calebhicks.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── michael.westerbyibm.com.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── contents.xcplayground └── 3.4 Constant and Variable Scope ├── exercise-1.playground └── contents.xcplayground ├── exercise-2.playground └── contents.xcplayground └── Lab - Scope.playground ├── playground.xcworkspace ├── contents.xcworkspacedata ├── xcuserdata │ ├── calebhicks.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ └── michael.westerbyibm.com.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcshareddata │ └── IDEWorkspaceChecks.plist └── contents.xcplayground /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ISpy/ISpy/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 2/2.8 Displaying Data/Hello/Hello/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/Contest/Contest/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ScrollingForm/ScrollingForm/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/Meal Tracker/Meal Tracker/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 1/1.1 Introduction to Swift and Playgrounds/Hello, world!.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | var str = "Hello, playground" 4 | 5 | print(str) 6 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/EmojiDictionary/EmojiDictionary/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 4/4.7 Saving Data/EmojiDictionary/EmojiDictionary/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/IBBasics/IBBasics/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/Calculator/Calculator/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/LifeCycle/LifeCycle/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/OrderOfEvents/OrderOfEvents/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppEventCount/AppEventCount/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppLifeCycle/AppLifeCycle/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/EmojiDictionary/EmojiDictionary/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/HotelManzana/HotelManzana/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/SpacePhoto/SpacePhoto/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 2/2.9 Controls in Action/CommonInputControls/CommonInputControls/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 3/3.6 Segues and Navigation Controllers/TrafficSegues/TrafficSegues/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 3/3.9 Building Simple Workflows/Pizza Delivery Lab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.9 Building Simple Workflows/Pizza Delivery Lab.png -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/SystemViewControllers/SystemViewControllers/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/InterfaceBuilderBasics/InterfaceBuilderBasics/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/AutoLayoutPractice/AutoLayoutPractice/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/FlyingSquares.playground/timeline.xctimeline: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Unit 1/1.1 Introduction to Swift and Playgrounds/Lab - Introduction.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/exercise-1.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Optionals 4 | 5 | let userInputAge: String = "34" 6 | 7 | if let userAge = Int(userInputAge) { 8 | print(userAge) 9 | } 10 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ISpy/ISpy/Assets.xcassets/mountain.imageset/mountain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.4 Scroll Views/ISpy/ISpy/Assets.xcassets/mountain.imageset/mountain.jpg -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-3.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-4.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-5.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-6.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.3 Guard/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.3 Guard/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/exercise-3.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/exercise-4.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/exercise-5.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/exercise-6.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-10.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-3.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-4.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-5.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-6.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-7.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-8.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-9.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/exercise-3.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/exercise-4.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.8 Displaying Data/Hello/Hello/Assets.xcassets/IMG_0897.imageset/IMG_0897.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.8 Displaying Data/Hello/Hello/Assets.xcassets/IMG_0897.imageset/IMG_0897.jpg -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/exercise-3.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/exercise-4.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/exercise-5.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/exercise-6.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/exercise-3.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/exercise-4.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/exercise-5.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/exercise-3.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 5/5.2 Extensions/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 5/5.2 Extensions/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.5 Enumerations/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.5 Enumerations/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/B.imageset/B.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/B.imageset/B.pdf -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/G.imageset/G.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/G.imageset/G.pdf -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/O.imageset/O.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/O.imageset/O.pdf -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/R.imageset/R.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/R.imageset/R.pdf -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/Y.imageset/Y.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/Y.imageset/Y.pdf -------------------------------------------------------------------------------- /Unit 2/2.4 Classes, Inheritance/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.4 Classes, Inheritance/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.4 Classes, Inheritance/exercise-3.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.4 Classes, Inheritance/exercise-4.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/Lab - Loops.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 3/3.3 Guard/Lab - Guard.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 3/3.3 Guard/exercise-1.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/exercise-5.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 1/1.3 Operators/Lab - Operators.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.1 Strings/Lab - Strings.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-6.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-7.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-9.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-3.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - While Loops 4 | 5 | var diceRoll = 0 6 | 7 | while (diceRoll != 6) { 8 | diceRoll = Int(arc4random_uniform(6) + 1) 9 | print(diceRoll) 10 | } 11 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/Lab - Optionals.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/Lab - Protocols.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/HotelManzana/HotelManzana.xcodeproj/xcuserdata/michael.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/Lab - Closures.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/Lab - Structures.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/Lab - Collections.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 3/3.2 Type Casting and Inspection/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.2 Type Casting and Inspection/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.4 Constant and Variable Scope/exercise-1.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.4 Constant and Variable Scope/exercise-2.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 4/4.7 Saving Data/EmojiDictionary/EmojiDictionary.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Unit 5/5.2 Extensions/Lab - Extensions.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 1/1.4 Control Flow/Lab - Control Flow.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.4 Classes, Inheritance/Lab - Classes.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 3/3.5 Enumerations/Lab - Enumerations.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ISpy/ISpy.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.8 Displaying Data/Hello/Hello.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 3/3.4 Constant and Variable Scope/Lab - Scope.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/play.imageset/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/play.imageset/play.png -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/pause.imageset/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/pause.imageset/pause.png -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/play.imageset/play@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/play.imageset/play@2x.png -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/play.imageset/play@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/play.imageset/play@3x.png -------------------------------------------------------------------------------- /Unit 3/3.2 Type Casting and Inspection/Lab - Type Casting.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/B Selected.imageset/B Selected.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/B Selected.imageset/B Selected.pdf -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/G Selected.imageset/G Selected.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/G Selected.imageset/G Selected.pdf -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/O Selected.imageset/O Selected.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/O Selected.imageset/O Selected.pdf -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/R Selected.imageset/R Selected.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/R Selected.imageset/R Selected.pdf -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/Y Selected.imageset/Y Selected.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/Y Selected.imageset/Y Selected.pdf -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/Contest/Contest.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/forward.imageset/forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/forward.imageset/forward.png -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/pause.imageset/pause@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/pause.imageset/pause@2x.png -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/pause.imageset/pause@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/pause.imageset/pause@3x.png -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/reverse.imageset/reverse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/reverse.imageset/reverse.png -------------------------------------------------------------------------------- /Unit 5/5.5 Working with the Web - Decoding JSON/iTunes Search.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 1/1.1 Introduction to Swift and Playgrounds/Hello, world!.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/Meal Tracker/Meal Tracker.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.7 Saving Data/PersistencePlayground.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/FlyingSquares.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/forward.imageset/forward@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/forward.imageset/forward@2x.png -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/forward.imageset/forward@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/forward.imageset/forward@3x.png -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/reverse.imageset/reverse@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/reverse.imageset/reverse@2x.png -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/reverse.imageset/reverse@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/reverse.imageset/reverse@3x.png -------------------------------------------------------------------------------- /Unit 1/1.1 Introduction to Swift and Playgrounds/Lab - Introduction.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/IBBasics/IBBasics.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ScrollingForm/ScrollingForm.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 5/5.5 Working with the Web - Decoding JSON/Working with the Web.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 1/1.1 Introduction to Swift and Playgrounds/Hello, world!.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 1/1.2 Constants, Variables and Data Types/Lab - Constants and Variables.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/LifeCycle/LifeCycle.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.7 Saving Data/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch/iTunesSearch.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/Calculator/Calculator.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppLifeCycle/AppLifeCycle.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 5/5.5 Working with the Web - Decoding JSON/iTunes Search.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/OrderOfEvents/OrderOfEvents.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppEventCount/AppEventCount.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.3 Model View Controller/FavoriteAthlete/FavoriteAthlete.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/HotelManzana/HotelManzana.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/SpacePhoto/SpacePhoto.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch/Assets.xcassets/gray.imageset/Solid_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch/Assets.xcassets/gray.imageset/Solid_gray.png -------------------------------------------------------------------------------- /Unit 3/3.6 Segues and Navigation Controllers/TrafficSegues/TrafficSegues.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/EmployeeRoster/EmployeeRoster.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 5/5.4 Working with the Web - HTTP and URL Session/iTunes Search.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 5/5.5 Working with the Web - Decoding JSON/Working with the Web.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.9 Controls in Action/CommonInputControls/CommonInputControls.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 5/5.4 Working with the Web - HTTP and URL Session/Working with the Web.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/AutoLayoutPractice/AutoLayoutPractice.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/SystemViewControllers/SystemViewControllers/Assets.xcassets/download.imageset/download.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.8 System View Controllers/SystemViewControllers/SystemViewControllers/Assets.xcassets/download.imageset/download.jpg -------------------------------------------------------------------------------- /Unit 2/2.1 Strings/Lab - Strings.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.1 Strings/Lab - Strings.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/Lab - Loops.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.6 Loops/Lab - Loops.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.3 Guard/Lab - Guard.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.3 Guard/Lab - Guard.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/HomeFurniture/Room.swift: -------------------------------------------------------------------------------- 1 | 2 | import Foundation 3 | 4 | class Room { 5 | let name: String 6 | let furniture: [Furniture] 7 | 8 | init(name: String, furniture: [Furniture]) { 9 | self.name = name 10 | self.furniture = furniture 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/SystemViewControllers/SystemViewControllers.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/InterfaceBuilderBasics/InterfaceBuilderBasics.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-4.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - While Loops 4 | 5 | let cadence: Double = 180 6 | var testSteps = 0 7 | 8 | while testSteps < 10 { 9 | print("Take a step") 10 | testSteps = testSteps + 1 11 | Thread.sleep(forTimeInterval: 60/cadence) 12 | } 13 | -------------------------------------------------------------------------------- /Unit 1/1.3 Operators/Lab - Operators.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 1/1.3 Operators/Lab - Operators.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/Lab - Closures.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.1 Closures/Lab - Closures.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/Lab - Optionals.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.1 Optionals/Lab - Optionals.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/Lab - Protocols.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.1 Protocols/Lab - Protocols.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 1/1.4 Control Flow/Lab - Control Flow.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 1/1.4 Control Flow/Lab - Control Flow.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 5/5.2 Extensions/Lab - Extensions.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.2 Extensions/Lab - Extensions.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/Contest/Contest.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/Contest/Contest.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/Lab - Collections.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.5 Collections/Lab - Collections.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.3 Guard/Lab - Guard.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Unit 3/3.3 Guard/Lab - Guard.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.3 Guard/Lab - Guard.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.3 Guard/exercise-1.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.3 Guard/exercise-1.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.5 Enumerations/Lab - Enumerations.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.5 Enumerations/Lab - Enumerations.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/exercise-5.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.1 Protocols/exercise-5.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ISpy/ISpy.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.4 Scroll Views/ISpy/ISpy.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-7.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.3 Structures/exercise-7.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.4 Classes, Inheritance/Lab - Classes.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.4 Classes, Inheritance/Lab - Classes.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.8 Displaying Data/Hello/Hello.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.8 Displaying Data/Hello/Hello.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/Lab - Protocols.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.1 Protocols/Lab - Protocols.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/Lab - Closures.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.1 Closures/Lab - Closures.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/Lab - Structures.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.3 Structures/Lab - Structures.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/Lab - Loops.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.3 Guard/Lab - Guard.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.3 Guard/exercise-1.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.4 Constant and Variable Scope/Lab - Scope.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.4 Constant and Variable Scope/Lab - Scope.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/exercise-5.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ISpy/ISpy.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 5/5.2 Extensions/Lab - Extensions.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Unit 5/5.2 Extensions/Lab - Extensions.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.2 Extensions/Lab - Extensions.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-6.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-7.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-9.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 2/2.8 Displaying Data/Hello/Hello.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/Lab - Optionals.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.4 Constant and Variable Scope/Lab - Scope.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Unit 3/3.5 Enumerations/Lab - Enumerations.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/Lab - Protocols.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.3 Model View Controller/FavoriteAthlete/FavoriteAthlete.xcodeproj/project.xcworkspace/xcuserdata/owen.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.3 Model View Controller/FavoriteAthlete/FavoriteAthlete.xcodeproj/project.xcworkspace/xcuserdata/owen.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/Lab - Closures.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/Lab - Structures.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.5 Enumerations/Lab - Enumerations.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.5 Enumerations/Lab - Enumerations.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/HomeFurniture/HomeFurniture.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.8 System View Controllers/HomeFurniture/HomeFurniture.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 5/5.2 Extensions/Lab - Extensions.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 1/1.1 Introduction to Swift and Playgrounds/Hello, world!.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 1/1.1 Introduction to Swift and Playgrounds/Hello, world!.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.4 Classes, Inheritance/Lab - Classes.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 2/2.4 Classes, Inheritance/Lab - Classes.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.4 Classes, Inheritance/Lab - Classes.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.2 Type Casting and Inspection/Lab - Type Casting.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.2 Type Casting and Inspection/Lab - Type Casting.playground/playground.xcworkspace/xcuserdata/calebhicks.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.5 Enumerations/Lab - Enumerations.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/Meal Tracker/Meal Tracker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/Meal Tracker/Meal Tracker.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.5 Table Views/Meal Tracker/Meal Tracker.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/Contest/Contest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 5/5.5 Working with the Web - Decoding JSON/iTunes Search.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.5 Working with the Web - Decoding JSON/iTunes Search.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/IBBasics/IBBasics.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.4 Constant and Variable Scope/Lab - Scope.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ScrollingForm/ScrollingForm.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ScrollingForm/ScrollingForm.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.4 Scroll Views/ScrollingForm/ScrollingForm.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.7 Saving Data/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/EmployeeRoster/EmployeeRoster.xcodeproj/project.xcworkspace/xcuserdata/owen.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.9 Building Complex Input Screens/EmployeeRoster/EmployeeRoster.xcodeproj/project.xcworkspace/xcuserdata/owen.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/HotelManzana/HotelManzana.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.9 Building Complex Input Screens/HotelManzana/HotelManzana.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/SpacePhoto/SpacePhoto.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.6 Working with the Web - Concurrency/SpacePhoto/SpacePhoto.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 1/1.1 Introduction to Swift and Playgrounds/Lab - Introduction.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 1/1.1 Introduction to Swift and Playgrounds/Lab - Introduction.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/IBBasics/IBBasics.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 1/1.8 Interface Builder Basics/IBBasics/IBBasics.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.4 Constant and Variable Scope/Lab - Scope.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.4 Constant and Variable Scope/Lab - Scope.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/LifeCycle/LifeCycle.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.5 Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.7 Saving Data/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.7 Saving Data/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/EmployeeRoster/EmployeeRoster.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.9 Building Complex Input Screens/EmployeeRoster/EmployeeRoster.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/Calculator/Calculator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.2 Type Casting and Inspection/Lab - Type Casting.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Unit 3/3.2 Type Casting and Inspection/Lab - Type Casting.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/LifeCycle/LifeCycle.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.8 View Controller Life Cycle/LifeCycle/LifeCycle.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/OrderOfEvents/OrderOfEvents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppEventCount/AppEventCount.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppLifeCycle/AppLifeCycle.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.3 Model View Controller/FavoriteAthlete/FavoriteAthlete.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/FavoriteBook/FavoriteBooks.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/HomeFurniture/HomeFurniture.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 5/5.5 Working with the Web - Decoding JSON/Working with the Web.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 5/5.5 Working with the Web - Decoding JSON/Working with the Web.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 5/5.5 Working with the Web - Decoding JSON/iTunes Search.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 2/2.9 Controls in Action/CommonInputControls/CommonInputControls.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/HotelManzana/HotelManzana.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/SpacePhoto/SpacePhoto.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/Calculator/Calculator.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.10 Auto Layout and Stack Views/Calculator/Calculator.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.2 Type Casting and Inspection/Lab - Type Casting.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.2 Type Casting and Inspection/Lab - Type Casting.playground/playground.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.6 Segues and Navigation Controllers/TrafficSegues/TrafficSegues.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/FavoriteBook/FavoriteBooks.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.6 Intermediate Table Views/FavoriteBook/FavoriteBooks.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/SystemViewControllers/SystemViewControllers.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.8 System View Controllers/SystemViewControllers/SystemViewControllers.xcodeproj/project.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/EmployeeRoster/EmployeeRoster.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 5/5.5 Working with the Web - Decoding JSON/Working with the Web.playground/playground.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 1/1.2 Constants, Variables and Data Types/Lab - Constants and Variables.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 1/1.2 Constants, Variables and Data Types/Lab - Constants and Variables.playground/playground.xcworkspace/xcuserdata/michael.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/AutoLayoutPractice/AutoLayoutPractice.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/OrderOfEvents/OrderOfEvents.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.8 View Controller Life Cycle/OrderOfEvents/OrderOfEvents.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppEventCount/AppEventCount.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.2 App Anatomy and Life Cycle/AppEventCount/AppEventCount.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppLifeCycle/AppLifeCycle.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.2 App Anatomy and Life Cycle/AppLifeCycle/AppLifeCycle.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.3 Model View Controller/FavoriteAthlete/FavoriteAthlete.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.3 Model View Controller/FavoriteAthlete/FavoriteAthlete.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/SystemViewControllers/SystemViewControllers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/InterfaceBuilderBasics/InterfaceBuilderBasics.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 4/4.6 Intermediate Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 2/2.9 Controls in Action/CommonInputControls/CommonInputControls.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.9 Controls in Action/CommonInputControls/CommonInputControls.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 3/3.6 Segues and Navigation Controllers/TrafficSegues/TrafficSegues.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 3/3.6 Segues and Navigation Controllers/TrafficSegues/TrafficSegues.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/HomeFurniture/Furniture.swift: -------------------------------------------------------------------------------- 1 | 2 | import Foundation 3 | 4 | class Furniture { 5 | let name: String 6 | let description: String 7 | var imageData: Data? 8 | 9 | init(name: String, description: String, imageData: Data? = nil) { 10 | self.name = name 11 | self.description = description 12 | self.imageData = imageData 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/Lab - Closures.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/AutoLayoutPractice/AutoLayoutPractice.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 2/2.10 Auto Layout and Stack Views/AutoLayoutPractice/AutoLayoutPractice.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/InterfaceBuilderBasics/InterfaceBuilderBasics.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwesterby/app-development-with-swift/HEAD/Unit 1/1.8 Interface Builder Basics/InterfaceBuilderBasics/InterfaceBuilderBasics.xcodeproj/project.xcworkspace/xcuserdata/michael.westerbyibm.com.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/FavoriteBook/FavoriteBooks.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/HomeFurniture/HomeFurniture.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/Lab - Collections.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/Meal Tracker/Meal Tracker/Meal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Meal.swift 3 | // Meal Tracker 4 | // 5 | // Created by Michael Westerby on 09/05/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct Meal { 12 | var name: String 13 | var food: [Food] 14 | 15 | init(name: String, food: [Food]) { 16 | self.name = name 17 | self.food = food 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ISpy/ISpy/Assets.xcassets/mountain.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "mountain.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-6.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Finding Movements 4 | 5 | let lowHR = 110 6 | let highHR = 125 7 | var movementHeartRates: [String: Int] = ["Walking": 85, "Running": 120, "Swimming": 130, "Cycling": 128, "Skiing": 114, "Climbing": 129] 8 | 9 | for (movement, heartRate) in movementHeartRates { 10 | if (heartRate > lowHR && heartRate < highHR) { 11 | print("You could go \(movement)") 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Unit 2/2.8 Displaying Data/Hello/Hello/Assets.xcassets/IMG_0897.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "IMG_0897.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 2/2.8 Displaying Data/Hello/Hello/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Hello 4 | // 5 | // Created by Michael Westerby on 15/04/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do any additional setup after loading the view. 16 | } 17 | 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/B.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "B.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/G.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "G.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/O.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "O.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/R.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "R.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/Y.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Y.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/Meal Tracker/Meal Tracker/Food.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Food.swift 3 | // Meal Tracker 4 | // 5 | // Created by Michael Westerby on 09/05/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct Food { 12 | var name: String 13 | var description: String 14 | 15 | init(name: String, description: String) { 16 | self.name = name 17 | self.description = description 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/Lab - Loops.playground/Pages/3. Exercise - While Loops.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | /*: 3 | ## Exercise - While Loops 4 | 5 | Create a while loop that simulates rolling a 6-sided dice repeatedly until a 1 is rolled. After each roll, print the value. (Hint: use `Int(arc4random_uniform(6) + 1)` to generate a random number between 1 and 6). 6 | */ 7 | 8 | 9 | 10 | //: [Previous](@previous) | page 3 of 6 | [Next: App Exercise - While Loops](@next) 11 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/B Selected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "B Selected.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/G Selected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "G Selected.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/O Selected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "O Selected.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/R Selected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "R Selected.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/Assets.xcassets/Y Selected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Y Selected.pdf", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch/Assets.xcassets/gray.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "Solid_gray.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/Calculator/Calculator/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Calculator 4 | // 5 | // Created by Michael Westerby on 19/04/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do any additional setup after loading the view. 16 | } 17 | 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /Unit 1/1.4 Control Flow/Lab - Control Flow.playground/Pages/8. Exercise - Ternary Operator.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- 1 | /*: 2 | ## Exercise - Ternary Operator 3 | 4 | Refactor the code below so that `largest` is declared and assigned to in one line using the ternary operator. 5 | */ 6 | let number1 = 14 7 | let number2 = 25 8 | 9 | var largest: Int = number1 > number2 ? number1 : number2 10 | print(largest) 11 | //: [Previous](@previous) | page 8 of 9 | [Next: App Exercise - Ternary Messages](@next) 12 | -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppLifeCycle/AppLifeCycle/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // AppLifeCycle 4 | // 5 | // Created by Michael Westerby on 28/04/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do any additional setup after loading the view. 16 | } 17 | 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /Unit 4/4.3 Model View Controller/FavoriteAthlete/FavoriteAthlete/Athlete.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Athlete.swift 3 | // FavoriteAthlete 4 | // 5 | // Created by Michael Westerby on 02/05/2020. 6 | // 7 | 8 | import Foundation 9 | 10 | struct Athlete { 11 | var name: String 12 | var age: String 13 | var league: String 14 | var team: String 15 | var description: String { 16 | return "\(name) is \(age) years old and plays for the \(team) in the \(league)." 17 | } 18 | } 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/SystemViewControllers/SystemViewControllers/Assets.xcassets/download.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "download.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/OrderOfEvents/OrderOfEvents/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // OrderOfEvents 4 | // 5 | // Created by Michael Westerby on 25/04/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do any additional setup after loading the view. 16 | } 17 | 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ISpy/ISpy.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | ISpy.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/Contest/Contest.xcodeproj/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Contest.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 2/2.4 Classes, Inheritance/Lab - Classes.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Unit 2/2.8 Displaying Data/Hello/Hello.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Hello.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/Meal Tracker/Meal Tracker/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Meal Tracker 4 | // 5 | // Created by Michael Westerby on 09/05/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do any additional setup after loading the view, typically from a nib. 16 | } 17 | 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/exercise-1.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Create Closures 4 | 5 | var blankClosure = { () -> Void in 6 | return 7 | } 8 | 9 | let fourClosure = { () -> Int in 10 | return 4 11 | } 12 | 13 | print(fourClosure()) 14 | print(fourClosure()) 15 | print(fourClosure()) 16 | print(fourClosure()) 17 | 18 | let greeting = { (name: String) -> Void in 19 | print(name) 20 | } 21 | 22 | greeting("Gary") 23 | greeting("Jane") 24 | greeting("Rick") 25 | greeting("Beth") 26 | -------------------------------------------------------------------------------- /Unit 4/4.3 Model View Controller/FavoriteAthlete/FavoriteAthlete.xcodeproj/xcuserdata/owen.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | FavoriteAthlete.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/AutoLayoutPractice/AutoLayoutPractice/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // AutoLayoutPractice 4 | // 5 | // Created by Michael Westerby on 17/04/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do any additional setup after loading the view. 16 | } 17 | 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/EmployeeRoster/EmployeeRoster.xcodeproj/xcuserdata/owen.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | EmployeeRoster.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/Meal Tracker/Meal Tracker.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Meal Tracker.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/HomeFurniture/HomeFurniture.xcodeproj/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | HomeFurniture.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe.xcodeproj/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | MusicWireframe.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/IBBasics/IBBasics.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | IBBasics.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/exercise-1.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Arrays 4 | 5 | var registrationList: [String] = [] 6 | 7 | registrationList.append("Sara") 8 | print(registrationList) 9 | 10 | registrationList += ["Alex", "Mark", "Michael", "James"] 11 | print(registrationList) 12 | 13 | registrationList.insert("Charlie", at: 1) 14 | print(registrationList) 15 | 16 | registrationList[5] = "Rebecca" 17 | print(registrationList) 18 | 19 | var deletedItem = registrationList.removeLast() 20 | print(deletedItem) 21 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | RainbowTabs.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ScrollingForm/ScrollingForm.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | ScrollingForm.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/HotelManzana/HotelManzana.xcodeproj/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | HotelManzana.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/SpacePhoto/SpacePhoto.xcodeproj/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | SpacePhoto.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/LifeCycle/LifeCycle.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | LifeCycle.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | EmojiDictionary.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.7 Saving Data/EmojiDictionary/EmojiDictionary.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | EmojiDictionary.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/EmployeeRoster/EmployeeRoster.xcodeproj/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | EmployeeRoster.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch.xcodeproj/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | iTunesSearch.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 2/2.1 Strings/Lab - Strings.playground/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Lab - Strings (Playground).xcscheme 8 | 9 | isShown 10 | 11 | orderHint 12 | 0 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/Calculator/Calculator.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Calculator.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/Lab - Protocols.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppLifeCycle/AppLifeCycle.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | AppLifeCycle.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/FavoriteBook/FavoriteBooks.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | FavoriteBooks.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/exercise-5.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Return Values 4 | 5 | func greeting(name: String) -> String { 6 | return "Hi \(name)! How are you?" 7 | } 8 | 9 | var greetingResult = greeting(name: "Michael") 10 | print(greetingResult) 11 | 12 | // ------------ 13 | 14 | func multiplyAndAddTwo(_ firstNumber: Int, to secondNumber: Int) -> Int { 15 | return (firstNumber * secondNumber) + 2 16 | } 17 | 18 | var multiplyAndAddTwoResult = multiplyAndAddTwo(5, to: 8) 19 | print(multiplyAndAddTwoResult) 20 | -------------------------------------------------------------------------------- /Unit 3/3.8 View Controller Life Cycle/OrderOfEvents/OrderOfEvents.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | OrderOfEvents.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.2 App Anatomy and Life Cycle/AppEventCount/AppEventCount.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | AppEventCount.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.3 Model View Controller/FavoriteAthlete/FavoriteAthlete.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | FavoriteAthlete.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 1/1.3 Operators/Lab - Operators.playground/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Lab - Operators (Playground).xcscheme 8 | 9 | isShown 10 | 11 | orderHint 12 | 0 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/exercise-4.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Pacing 4 | 5 | var paces: [String: Double] = ["Easy": 10.0, "Medium": 8.0, "Fast": 6.0] 6 | print(paces) 7 | 8 | paces["Sprint"] = 4.0 9 | print(paces) 10 | 11 | paces.updateValue(7.5, forKey: "Medium") 12 | paces.updateValue(5.8, forKey: "Fast") 13 | print(paces) 14 | 15 | paces.removeValue(forKey: "Sprint") 16 | print(paces) 17 | 18 | 19 | if let mediumPace = paces["Medium"] { 20 | print("Okay! I'll keep you at a \(mediumPace) minute mile pace.") 21 | } 22 | -------------------------------------------------------------------------------- /Unit 3/3.6 Segues and Navigation Controllers/TrafficSegues/TrafficSegues.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | TrafficSegues.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/EmojiDictionary/EmojiDictionary.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | EmojiDictionary.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 4/4.8 System View Controllers/SystemViewControllers/SystemViewControllers.xcodeproj/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | SystemViewControllers.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 1/1.4 Control Flow/Lab - Control Flow.playground/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Lab - Control Flow (Playground).xcscheme 8 | 9 | isShown 10 | 11 | orderHint 12 | 0 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-2.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Movements 4 | 5 | let movements: [String] = ["Walking", "Running", "Swimming", "Cycling", "Skiing", "Climbing"] 6 | 7 | for movement in movements { 8 | print(movement) 9 | } 10 | 11 | var movementHeartRates: [String: Int] = ["Walking": 85, "Running": 120, "Swimming": 130, "Cycling": 128, "Skiing": 114, "Climbing": 129] 12 | 13 | for (movement, heartRate) in movementHeartRates { 14 | print("Your average heart rate while \(movement) was \(heartRate)bpm.") 15 | } 16 | -------------------------------------------------------------------------------- /Unit 2/2.9 Controls in Action/CommonInputControls/CommonInputControls.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CommonInputControls.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 3/3.7 Tab Bar Controllers/RainbowTabs/RainbowTabs/RedViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RedViewController.swift 3 | // RainbowTabs 4 | // 5 | // Created by Michael Westerby on 24/04/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class RedViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do any additional setup after loading the view. 16 | 17 | tabBarItem.badgeValue = "!" 18 | } 19 | 20 | 21 | } 22 | 23 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/pause.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "pause.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "pause@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "pause@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/play.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "play.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "play@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "play@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Unit 2/2.1 Strings/Lab - Strings.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Unit 2/2.10 Auto Layout and Stack Views/AutoLayoutPractice/AutoLayoutPractice.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | AutoLayoutPractice.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/exercise-3.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Collection Functions 4 | 5 | let testScores = [65, 80, 88, 90, 47] 6 | 7 | let testScoresPlusOne = testScores.map({$0 + 1}) 8 | print(testScoresPlusOne) 9 | 10 | let schoolSubjects = ["Math", "Computer Science", "Gym", "English", "Biology"] 11 | 12 | let longSubjects = schoolSubjects.filter({$0.count > 4}) 13 | print(longSubjects) 14 | 15 | let damageTaken = [25, 10, 15, 30, 20] 16 | 17 | let remainingHealth = damageTaken.reduce(100, {$0 - $1}) 18 | print(remainingHealth) 19 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/forward.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "forward.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "forward@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "forward@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframe/Assets.xcassets/reverse.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "reverse.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "reverse@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "reverse@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/InterfaceBuilderBasics/InterfaceBuilderBasics.xcodeproj/xcuserdata/michael.westerbyibm.com.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | InterfaceBuilderBasics.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Unit 1/1.1 Introduction to Swift and Playgrounds/Lab - Introduction.playground/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Lab - Introduction (Playground).xcscheme 8 | 9 | isShown 10 | 11 | orderHint 12 | 0 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/Lab - Loops.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-1.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - For-In Loops 4 | 5 | for index in 1...100 { 6 | print(index) 7 | } 8 | 9 | // ------ 10 | 11 | let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 12 | 13 | for (index, letters) in alphabet.enumerated() { 14 | print("\(index): \(letters)") 15 | } 16 | 17 | // ------ 18 | 19 | let states: [String: String] = ["Alabama": "Montgomery", "Alaska": "Juneau", "Arizona": "Phoenix"] 20 | 21 | for (stateName, stateCaptial) in states { 22 | print("\(stateCaptial) is the captial of \(stateName).") 23 | } 24 | -------------------------------------------------------------------------------- /Unit 1/1.2 Constants, Variables and Data Types/Lab - Constants and Variables.playground/xcuserdata/michael.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Lab - Constants and Variables (Playground).xcscheme 8 | 9 | isShown 10 | 11 | orderHint 12 | 0 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/Lab - Optionals.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/exercise-2.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Finding a Heart Rate 4 | 5 | var heartRate: Int? = nil 6 | print(heartRate) 7 | 8 | heartRate = 74 9 | print(heartRate) 10 | 11 | let oldHR1 = 80 12 | let oldHR2 = 76 13 | let oldHR3 = 79 14 | let oldHR4 = 70 15 | 16 | var heartRateSum: Int = oldHR1 + oldHR2 + oldHR3 + oldHR4 17 | var hrAverage: Int 18 | 19 | if let currentHeartRate = heartRate { 20 | heartRateSum += currentHeartRate 21 | hrAverage = heartRateSum / 5 22 | } else { 23 | hrAverage = heartRateSum / 4 24 | } 25 | 26 | print(hrAverage) 27 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/Lab - Functions.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-2.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Workout Tracking 4 | 5 | struct RunningWorkout { 6 | var distance: Double = 0.0 7 | var time: Double = 0.0 8 | var elevation: Double = 0.0 9 | } 10 | 11 | var firstRun = RunningWorkout() 12 | print(firstRun.distance) 13 | print(firstRun.time) 14 | print(firstRun.elevation) 15 | 16 | firstRun.distance = 2396 17 | firstRun.time = 15.3 18 | firstRun.elevation = 94 19 | 20 | print("In your first run, you travelled \(firstRun.distance)m in \(firstRun.time) minutes and gained \(firstRun.elevation) metres elevation.") 21 | 22 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/iTunesSearch/iTunesSearch/URL+Helpers.swift: -------------------------------------------------------------------------------- 1 | // 2 | // URL+Helpers.swift 3 | // iTunesSearch 4 | // 5 | // Created by Michael Westerby on 06/06/2020. 6 | // Copyright © 2020 Caleb Hicks. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension URL { 12 | func withQueries(_ queries:[String: String]) -> URL? { 13 | var components = URLComponents(url: self, resolvingAgainstBaseURL: true) 14 | components?.queryItems = queries.map { 15 | URLQueryItem(name: $0.0, value: $0.1) 16 | } 17 | return components?.url 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/exercise-6.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Workout or Nil 4 | 5 | struct Workout { 6 | var startTime: Double 7 | var endTime: Double 8 | 9 | init?(startTime: Double, endTime: Double) { 10 | if((endTime - startTime) < 10) { 11 | return nil 12 | } else { 13 | self.startTime = startTime 14 | self.endTime = endTime 15 | } 16 | } 17 | } 18 | 19 | var workout1 = Workout(startTime: 50, endTime: 70) 20 | var workout2 = Workout(startTime: 80, endTime: 85) 21 | 22 | print(workout1?.startTime) 23 | print(workout2?.startTime) 24 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/EmojiDictionary/EmojiDictionary/Emoji.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Emoji.swift 3 | // EmojiDictionary 4 | // 5 | // Created by Michael Westerby on 07/05/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct Emoji { 12 | var symbol: String 13 | var name: String 14 | var description: String 15 | var usage: String 16 | 17 | init(symbol: String, name: String, description: String, usage: String) { 18 | self.symbol = symbol 19 | self.name = name 20 | self.description = description 21 | self.usage = usage 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/exercise-5.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Control Transfer Statements 4 | 5 | let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 6 | 7 | for (index, letters) in alphabet.enumerated() { 8 | if (index % 2 == 0) { 9 | print("\(letters)") 10 | } 11 | } 12 | 13 | // ------- 14 | 15 | let states: [String: String] = ["Alabama": "Montgomery", "Alaska": "Juneau", "Arizona": "Phoenix"] 16 | 17 | for (stateName, stateCaptial) in states { 18 | print("\(stateCaptial) is the captial of \(stateName).") 19 | if stateName == "Arizona" { 20 | print("I found my home!") 21 | break 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/EmojiDictionary/EmojiDictionary/Emoji.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Emoji.swift 3 | // EmojiDictionary 4 | // 5 | // Created by Michael Westerby on 07/05/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct Emoji { 12 | var symbol: String 13 | var name: String 14 | var description: String 15 | var usage: String 16 | 17 | init(symbol: String, name: String, description: String, usage: String) { 18 | self.symbol = symbol 19 | self.name = name 20 | self.description = description 21 | self.usage = usage 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/exercise-3.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Create a Protocol 4 | 5 | protocol Vehicle { 6 | var numberOfWheels: Int {get} 7 | func drive() 8 | } 9 | 10 | struct Car: Vehicle { 11 | var numberOfWheels: Int = 4 12 | 13 | func drive() { 14 | print("Vroom, vroom!") 15 | } 16 | } 17 | 18 | var car1 = Car() 19 | 20 | print(car1.numberOfWheels) 21 | car1.drive() 22 | 23 | struct Bike: Vehicle { 24 | var numberOfWheels: Int = 2 25 | 26 | func drive() { 27 | print("Begin pedaling!") 28 | } 29 | } 30 | 31 | var bike1 = Bike() 32 | 33 | print(bike1.numberOfWheels) 34 | bike1.drive() 35 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/exercise-3.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Parameters and Argument Labels 4 | 5 | func introduction(name: String, home: String, age: Int) { 6 | print("\(name), \(age), is from \(home).") 7 | } 8 | 9 | introduction(name: "Michael", home: "Rugby", age: 23) 10 | 11 | // ------------ 12 | 13 | func almostAddition(_ firstNumber: Int, to secondNumber: Int) { 14 | print((firstNumber + secondNumber) / 2) 15 | } 16 | 17 | almostAddition(4, to: 10) 18 | 19 | // ------------ 20 | 21 | func multiply(_ firstNumber: Double, by secondNumber: Double) { 22 | print(firstNumber * secondNumber) 23 | } 24 | 25 | multiply(4.2, by: 3.8) 26 | 27 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-10.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Type Properties and Methods 4 | 5 | struct RunningWorkout4 { 6 | static let meterInFeet: Double = 3.28084 7 | static let mileInMeters: Double = 1600.0 8 | var distance: Double 9 | var time: Double 10 | var elevation: Double 11 | 12 | static func mileTimeFor(distance: Double, time: Double) -> Double { 13 | let distanceInMiles = distance / 1600 14 | return distanceInMiles * time 15 | } 16 | } 17 | 18 | print(RunningWorkout4.mileTimeFor(distance: 1000, time: 12)) 19 | print(RunningWorkout4.meterInFeet) 20 | print(RunningWorkout4.mileInMeters) 21 | 22 | -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/InterfaceBuilderBasics/InterfaceBuilderBasics/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // InterfaceBuilderBasics 4 | // 5 | // Created by Michael Westerby on 14/04/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | @IBOutlet var mainLabel: UILabel! 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | // Do any additional setup after loading the view. 17 | } 18 | 19 | @IBAction func changeTitle(_ sender: Any) { 20 | mainLabel.text = "This app rocks!" 21 | } 22 | 23 | } 24 | 25 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-9.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Type Properties and Methods 4 | 5 | struct User2 { 6 | static var currentUser = User2(userName: "Michael", email: "michael@email.com", age: 23) 7 | var userName: String 8 | var email: String 9 | var age: Int 10 | 11 | static func logIn(user: User2) { 12 | currentUser = user 13 | print("\(user.userName) has logged in.") 14 | } 15 | } 16 | 17 | print(User2.currentUser.userName) 18 | print(User2.currentUser.email) 19 | print(User2.currentUser.age) 20 | 21 | var user2 = User2(userName: "James", email: "james@email.com", age: 23) 22 | User2.logIn(user: user2) 23 | 24 | -------------------------------------------------------------------------------- /Unit 1/1.8 Interface Builder Basics/IBBasics/IBBasics/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // IBBasics 4 | // 5 | // Created by Michael Westerby on 14/04/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | @IBOutlet var myButton: UIButton! 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | // Do any additional setup after loading the view. 17 | myButton.setTitleColor(.red, for: .normal) 18 | } 19 | 20 | @IBAction func buttonPressed(_ sender: Any) { 21 | print("The button was pressed") 22 | } 23 | 24 | } 25 | 26 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/exercise-1.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Create Functions 4 | 5 | func introduceMyself() { 6 | print("Hello, my name is Michael") 7 | } 8 | 9 | introduceMyself() 10 | 11 | // ------------ 12 | 13 | func magicEightBall() { 14 | let randomNum = arc4random_uniform(UInt32(5)) 15 | switch randomNum { 16 | case 1: 17 | print("Number 1 was generated") 18 | case 2: 19 | print("Number 2 was generated") 20 | case 3: 21 | print("Number 3 was generated") 22 | case 4: 23 | print("Number 4 was generated") 24 | default: 25 | print("I don't know that number") 26 | } 27 | } 28 | 29 | magicEightBall() 30 | -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/exercise-2.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Passing Closures as Arguments and Syntactic Sugar 4 | 5 | func forwards (name1: String, name2: String) -> Bool { 6 | print(name1) 7 | print(name2) 8 | return name1 < name2 9 | } 10 | 11 | var friends: [String] = ["James", "Joe", "Craig", "Matt", "Judith", "Izzy"] 12 | 13 | var sortedCollection1 = friends.sorted(by: forwards(name1:name2:)) 14 | print(sortedCollection1) 15 | 16 | var sortedCollection2 = friends.sorted { (name1: String, name2: String) -> Bool in 17 | return name1 < name2 18 | } 19 | print(sortedCollection2) 20 | 21 | var sortedCollection3 = friends.sorted { return $0 < $1 } 22 | print(sortedCollection3) 23 | -------------------------------------------------------------------------------- /Unit 1/1.3 Operators/Lab - Operators.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Unit 3/3.1 Optionals/exercise-4.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Food Functions 4 | 5 | struct Meal { 6 | var food: [String] 7 | var calories: Int 8 | } 9 | 10 | var meals: [String: Meal] = ["Breakfast": Meal(food: ["Bagel", "Orange Juice", "Egg Whites"], calories: 530)] 11 | 12 | func getFood(meal: String) -> Meal? { 13 | let foodConsumed: Meal? = meals[meal] 14 | if let mealRecored = foodConsumed { 15 | return mealRecored 16 | } 17 | return nil 18 | } 19 | 20 | print(getFood(meal: "Breakfast")) 21 | print(getFood(meal: "Lunch")) 22 | 23 | func getMealLog() -> [String: Any]? { 24 | return UserDefaults.standard.dictionary(forKey: "mealLog") 25 | } 26 | 27 | print(getMealLog()) 28 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/EmployeeRoster/EmployeeRoster/Employee.swift: -------------------------------------------------------------------------------- 1 | 2 | import Foundation 3 | 4 | enum EmployeeType { 5 | case exempt 6 | case nonExempt 7 | case partTime 8 | 9 | static let all: [EmployeeType] = [.exempt, .nonExempt, .partTime] 10 | 11 | func description() -> String { 12 | switch self { 13 | case .exempt: 14 | return "Exempt Full Time" 15 | case .nonExempt: 16 | return "Non-exempt Full Time" 17 | case .partTime: 18 | return "Part Time" 19 | } 20 | } 21 | } 22 | 23 | struct Employee { 24 | 25 | var name: String 26 | var dateOfBirth: Date 27 | var employeeType: EmployeeType 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/Lab - Functions.playground/Pages/5. Exercise - Return Values.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- 1 | /*: 2 | ## Exercise - Return Values 3 | 4 | Write a function called `greeting` that takes a `String` argument called name, and returns a `String` that greets the name that was passed into the function. I.e. if you pass in "Dan" the return value might be "Hi, Dan! How are you?" Use the function and print the result. 5 | */ 6 | 7 | 8 | /*: 9 | Write a function that takes two `Int` arguments, and returns an `Int`. The function should multiply the two arguments, add 2, then return the result. Use the function and print the result. 10 | */ 11 | 12 | 13 | //: [Previous](@previous) | page 5 of 6 | [Next: App Exercise - Separating Functions](@next) 14 | -------------------------------------------------------------------------------- /Unit 1/1.4 Control Flow/Lab - Control Flow.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/exercise-2.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Activity Challenge 4 | 5 | var walkingChallenges: [String] = ["Walk 3 miles a day", "Walk 5 times a day"] 6 | var runningChallenges: [String] = ["Run 4 km in a day", "Run 3 times a week"] 7 | 8 | var challenges = [walkingChallenges, runningChallenges] 9 | 10 | print(challenges[1][0]) 11 | 12 | challenges.removeAll() 13 | 14 | print(challenges) 15 | 16 | var commitedChallenges: [String] = [walkingChallenges[0]] 17 | 18 | if (commitedChallenges.isEmpty) { 19 | print("Please commit to a challenge") 20 | } else if (commitedChallenges.count == 1) { 21 | print("The challenge you have chosen is \(commitedChallenges[0])") 22 | } else { 23 | print("You have chosen multiple challenges.") 24 | } 25 | -------------------------------------------------------------------------------- /Unit 2/2.5 Collections/exercise-3.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // Exercise - Dictionaries 4 | 5 | var daysInMonths: [String: Int] = ["January": 31, "February": 28, "March": 31] 6 | print(daysInMonths) 7 | 8 | daysInMonths["April"] = 30 9 | print(daysInMonths) 10 | 11 | daysInMonths.updateValue(29, forKey: "February") 12 | print(daysInMonths) 13 | 14 | if let daysInJan = daysInMonths["January"] { 15 | print("January has \(daysInJan) days") 16 | } 17 | 18 | // --------- 19 | 20 | let shapesArray = ["Circle", "Square", "Triangle"] 21 | let colorsArray = ["Red", "Green", "Blue"] 22 | 23 | var shapesAndColors: [String: [String]] = ["Shapes": shapesArray, "Colors": colorsArray] 24 | print(shapesAndColors) 25 | 26 | if let colors = shapesAndColors["Colors"] { 27 | print(colors[2]) 28 | } 29 | -------------------------------------------------------------------------------- /Unit 4/4.1 Protocols/exercise-4.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Similar Workouts 4 | 5 | protocol Workout { 6 | var distance: Double { get set } 7 | var time: Double { get set } 8 | } 9 | 10 | struct RunningWorkout: Workout { 11 | var distance: Double = 4.4 12 | var time: Double = 3.2 13 | } 14 | 15 | struct SwimmingWorkout: Workout { 16 | var distance: Double = 5.3 17 | var time: Double = 2.2 18 | } 19 | 20 | 21 | var runningWorkout = RunningWorkout() 22 | var swimmingWorkout = SwimmingWorkout() 23 | 24 | func simpleWorkoutDescription(workout: Workout) { 25 | print("You went \(workout.distance) meters in \(workout.time) seconds.") 26 | } 27 | 28 | simpleWorkoutDescription(workout: runningWorkout) 29 | simpleWorkoutDescription(workout: swimmingWorkout) 30 | -------------------------------------------------------------------------------- /Unit 2/2.3 Structures/exercise-6.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - Workout Functions 4 | 5 | struct RunningWorkout2 { 6 | var distance: Double 7 | var time: Double 8 | var elevation: Double 9 | 10 | func postWorkoutStats() { 11 | print("You ran for \(distance)m in \(time) minutes and gained \(elevation) metres elevation.") 12 | } 13 | } 14 | 15 | var secondRun = RunningWorkout2(distance: 1000, time: 10, elevation: 40) 16 | secondRun.postWorkoutStats() 17 | 18 | // --------- 19 | 20 | struct Steps { 21 | var steps: Int 22 | var goal: Int 23 | 24 | mutating func takeStep() { 25 | self.steps = self.steps + 1 26 | } 27 | } 28 | 29 | var steps = Steps(steps: 0, goal: 10) 30 | print(steps.steps) 31 | steps.takeStep() 32 | print(steps.steps) 33 | 34 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ISpy/ISpyTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ISpy/ISpyUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 1/1.2 Constants, Variables and Data Types/Lab - Constants and Variables.playground/Pages/2. App Exercise - Step Goal.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- 1 | /*: 2 | ## App Exercise - Step Goal 3 | 4 | >These exercises reinforce Swift concepts in the context of a fitness tracking app. 5 | 6 | Your fitness tracking app needs to know goal number of steps per day. Create a constant `goalSteps` and set it to 10000. 7 | */ 8 | let goalSteps = 10_000 9 | 10 | /*: 11 | Use two `print` functions to print two separate lines to the console. The first line should say "Your step goal for the day is:", and the second line should print the value of `goalSteps` by referencing your constant. 12 | */ 13 | print("Your step goal for the day is:") 14 | print(goalSteps) 15 | //: [Previous](@previous) | page 2 of 10 | [Next: Exercise - Variables](@next) 16 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/exercise-2.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | // App Exercise - A Functioning App 4 | 5 | var steps = 0 6 | 7 | func incrementSteps() { 8 | steps = steps + 1 9 | print(steps) 10 | } 11 | 12 | incrementSteps() 13 | incrementSteps() 14 | incrementSteps() 15 | 16 | // ------------ 17 | 18 | let goal = 10000 19 | 20 | func progressUpdate() { 21 | let percentOfGoal: Double = (Double(steps)/Double(goal)) * 100 22 | 23 | if percentOfGoal < 10 { 24 | print("You're off to a good start.") 25 | } else if percentOfGoal < 50 { 26 | print("You're almost halfway there!") 27 | } else if percentOfGoal < 90 { 28 | print("You're almost there!") 29 | } else if percentOfGoal > 100 { 30 | print("You beat your goal!") 31 | } 32 | } 33 | 34 | progressUpdate() 35 | -------------------------------------------------------------------------------- /Unit 2/2.6 Loops/Lab - Loops.playground/Pages/1. Exercise - For-In Loops.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- 1 | /*: 2 | ## Exercise - For-In Loops 3 | 4 | Create a for-in loop that loops through values 1 to 100, and prints each of the values. 5 | */ 6 | 7 | 8 | /*: 9 | Create a for-in loop that loops through each of the characters in the `alphabet` string below, and prints each of the values alongside the index. 10 | */ 11 | let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 12 | 13 | 14 | /*: 15 | Create a `[String: String]` dictionary, where the keys are names of states and the values are their capitals. Include at least three key/value pairs in your collection, then use a for-in loop to iterate over the pairs and print out the keys and values in a sentence. 16 | */ 17 | 18 | 19 | //: page 1 of 6 | [Next: App Exercise - Movements](@next) 20 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/SpacePhoto/SpacePhoto/URL+Helpers.swift: -------------------------------------------------------------------------------- 1 | // 2 | // URL+Helpers.swift 3 | // SpacePhoto 4 | // 5 | // Created by Michael Westerby on 05/06/2020. 6 | // Copyright © 2020 Michael Westerby. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension URL { 12 | func withQueries(_ queries: [String: String]) -> URL? { 13 | var components = URLComponents(url: self, resolvingAgainstBaseURL: true) 14 | components?.queryItems = queries.map 15 | { URLQueryItem(name: $0.0, value: $0.1) } 16 | return components?.url 17 | } 18 | 19 | func withHTTPS() -> URL? { 20 | var components = URLComponents(url: self, resolvingAgainstBaseURL: true) 21 | components?.scheme = "https" 22 | return components?.url 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Unit 2/2.2 Functions/Lab - Functions.playground/Pages/1. Exercise - Create Functions.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- 1 | /*: 2 | ## Exercise - Create Functions 3 | 4 | Write a function called `introduceMyself` that prints a brief introduction of yourself. Call the function and observe the printout. 5 | */ 6 | 7 | 8 | /*: 9 | Write a function called `magicEightBall` that generates a random number and then uses either a switch statement or if-else-if statements to print different responses based on the random number generated. `let randomNum = Int.random(in: 0...4)` will generate a random number from 0 to 4, after which you can print different phrases corresponding to the number generated. Call the function multiple times and observe the different printouts. 10 | */ 11 | 12 | 13 | //: page 1 of 6 | [Next: App Exercise - A Functioning App](@next) 14 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/Meal Tracker/Meal TrackerTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/Meal Tracker/Meal TrackerUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/Contest/ContestTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/Contest/ContestUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ScrollingForm/ScrollingFormTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.4 Scroll Views/ScrollingForm/ScrollingFormUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/EmojiDictionary/EmojiDictionaryTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.7 Saving Data/EmojiDictionary/EmojiDictionaryTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.5 Table Views/EmojiDictionary/EmojiDictionaryUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.7 Saving Data/EmojiDictionary/EmojiDictionaryUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframeTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 2/2.8 Displaying Data/Hello/HelloTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 5/5.3 Practical Animation/MusicWireframe/MusicWireframeUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 2/2.8 Displaying Data/Hello/HelloUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/EmojiDictionary/EmojiDictionaryTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.6 Intermediate Table Views/EmojiDictionary/EmojiDictionaryUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/HotelManzana/HotelManzanaTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 4/4.9 Building Complex Input Screens/HotelManzana/HotelManzanaUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 5/5.1 Closures/Lab - Closures.playground/Pages/1. Exercise - Create Closures.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- 1 | /*: 2 | ## Exercise - Create Closures 3 | 4 | Create a closure assigned to a constant `blankClosure` that has no parameters and no return value. 5 | */ 6 | 7 | 8 | /*: 9 | Create a closure assigned to a constant `fourClosure` that has no parameters and returns an `Int`. The body of the closure should always return the value 4. Call the closure four times. 10 | */ 11 | 12 | 13 | /*: 14 | Create a closure assigned to a constant `greeting` that accepts a `name` string argument with no return value. Within the body of the closure, print the argument. Call the closure four times using "Gary", "Jane", "Rick", and "Beth" as arguments. 15 | */ 16 | 17 | 18 | //: page 1 of 3 | [Next: Exercise - Passing Closures as Arguments and Syntactic Sugar](@next) 19 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/SpacePhoto/SpacePhotoTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Unit 5/5.6 Working with the Web - Concurrency/SpacePhoto/SpacePhotoUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | --------------------------------------------------------------------------------