App Development with Swift
My solutions to the exercises in Apple's free App Development with Swift textbook.
Contents
1. Getting Started with App Development
1.1 Introduction to Swift and Playgrounds
1.2 Constants, Variables and Data Types
- 1.2.0 Constants (Lab)
- 1.2.1 Constants (Exercise)
- 1.2.2 Step Goal (App Exercise)
- 1.2.3 Variables (Exercise)
- 1.2.4 Step Count (App Exercise)
- 1.2.5 Constant or Variable? (Exercise)
- 1.2.6 Fitness Tracker: Constant or Variable? (App Exercise)
- 1.2.7 Types and Type Safety (Exercise)
- 1.2.8 Tracking Different Types (App Exercise)
- 1.2.9 Type Inference and Required Values (Exercise)
- 1.2.10 Percent Completed (App Exercise)
1.3 Operators
- 1.3.0 Operators (Lab)
- 1.3.1 Basic Arithmetic (Exercise)
- 1.3.2 Fitness Calculations (App Exercise)
- 1.3.3 Compound Assignment (Exercise)
- 1.3.4 Counting (App Exercise)
- 1.3.5 Order of Operations (Exercise)
- 1.3.6 Complex Fitness Calculations (App Exercise)
- 1.3.7 Numeric Type Conversion (Exercise)
- 1.3.8 Converting Types (App Exercise)
1.4 Control Flow
- 1.4.0 Control Flow (Lab)
- 1.4.1 Logical Operators (Exercise)
- 1.4.2 If and If-Else Statements (Exercise)
- 1.4.3 Fitness Decisions (App Exercise)
- 1.4.4 Boolean Practice (Exercise)
- 1.4.5 Target Heart Rate (App Exercise)
- 1.4.6 Switch Statements (Exercise)
- 1.4.7 Heart Rate Zones (App Exercise)
- 1.4.8 Ternary Operator (Exercise)
- 1.4.9 Ternary Messages (App Exercise)
1.8 Interface Builder Basics
2. Introduction to UIKit
2.1 Strings
- 2.1.0 Strings (Lab)
- 2.1.1 String Basics (Exercise)
- 2.1.2 Concatenation and Interpolation (Exercise)
- 2.1.3 Notifications (App Exercise)
- 2.1.4 String Equality and Comparison (Exercise)
- 2.1.5 Password Entry and User Search (App Exercise)
2.2 Functions
- 2.2.0 Functions (Lab)
- 2.2.1 Create Functions (Exercise)
- 2.2.2 A Functioning App (App Exercise)
- 2.2.3 Parameters and Argument Labels (Exercise)
- 2.2.4 Progress Updates (App Exercise)
- 2.2.5 Return Values (Exercise)
- 2.2.6 Separating Functions (App Exercise)
2.3 Structures
- 2.3.0 Structures (Lab)
- 2.3.1 Structs, Instances, and Default Values (Exercise)
- 2.3.2 Workout Tracking (App Exercise)
- 2.3.3 Memberwise and Custom Initializers (Exercise)
- 2.3.4 Users and Distance (App Exercise)
- 2.3.5 Methods (Exercise)
- 2.3.6 Workout Functions (App Exercise)
- 2.3.7 Computed Properties and Property Observers (Exercise)
- 2.3.8 Mile Times and Congratulations (App Exercise)
- 2.3.9 Type Properties and Methods (Exercise)
- 2.3.10 Type Properties and Methods (App Exercise)
2.4 Classes, Inheritance
- 2.4.0 Classes (Lab)
- 2.4.1 Define a Base Class (Exercise)
- 2.4.2 Create a Subclass (Exercise)
- 2.4.3 Override Methods and Properties (Exercise)
- 2.4.4 Class Memberwise Initializers and References (Exercise)
2.5 Collections
- 2.5.0 Collections (Lab)
- 2.5.1 Arrays (Exercise)
- 2.5.2 Activity Challenge (App Exercise)
- 2.5.3 Dictionaries (Exercise)
- 2.5.4 Pacing (App Exercise)
2.6 Loops
- 2.6.0 Loops (Lab)
- 2.6.1 For-In Loops (Exercise)
- 2.6.2 Movements (App Exercise)
- 2.6.3 While Loops (Exercise)
- 2.6.4 While Loops (App Exercise)
- 2.6.5 Control Transfer Statements (Exercise)
- 2.6.6 Finding Movements (App Exercise)
2.7 Introduction to UIKit
2.8 Displaying Data
2.9 Controls in Action
- 2.9.0 CommonInputControls (Lesson)
- 2.9.1 Two Buttons (Lab)
2.10 Auto Layout and Stack Views
3. Navigation and Workflows
3.1 Optionals
- 3.1.0 Optionals (Lab)
- 3.1.1 Optionals (Exercise)
- 3.1.2 Finding a Heart Rate (App Exercise)
- 3.1.3 Functions and Optionals (Exercise)
- 3.1.4 Food Functions (App Exercise)
- 3.1.5 Failable Initializers (Exercise)
- 3.1.6 Workout or Nil (App Exercise)
3.2 Type Casting and Inspection
- 3.2.0 Type Casting (Lab)
- 3.2.1 Type Casting and Inspection (Exercise)
- 3.2.2 Workout Types (App Exercise)
3.3 Guard
3.4 Constant and Variable Scope
3.5 Enumerations
3.6 Segues and Navigation Controllers
- 3.6.0 TrafficSegues (Lesson)
- 3.6.1 Login (Lab)
3.7 Tab Bar Controllers
- 3.7.0 RainbowTabs (Lesson)
- 3.7.1 AboutMe (Lab)
3.8 View Controller Life Cycle
3.9 Building Simple Workflows
4. Tables and Persistance
4.1 Protocols
- 4.1.0 Protocols (Lab)
- 4.1.1 Adopt Protocols: CustomStringConvertible, Equatable, and Comparable (Exercise)
- 4.1.2 Printable Workouts (App Exercise)
- 4.1.3 Create a Protocol (Exercise)
- 4.1.4 Similar Workouts (App Exercise)
- 4.1.5 Heart Rate Delegate (App Exercise)
4.2 App Anatomy and Life Cycle
4.3 Model View Controller
4.4 Scroll Views
4.5 Table Views
4.6 Intermediate Table Views
4.7 Saving Data
4.8 System View Controllers
4.9 Building Complex Input Screens
5. Working with the Web
5.1 Closures
- 5.1.0 Closures (Lab)
- 5.1.1 Create Closures (Exercise)
- 5.1.2 Passing Closures as Arguments and Syntactic Sugar (Exercise)
- 5.1.3 Collection Functions (Exercise)