Intro to the Course. What's coming up?
Download the Course Syllabus
The Giant List of Resources
How to Get All the Free Stuff
Download your Massive Bundle of Assets
Download the 12 Rules to Learn to Code eBook PDF
How to Make the Most of the Bootcamp
How to Get Help When You're Stuck
Can I use Windows to develop iOS apps? (and other FAQs)
Developing for iOS - Tools and Materials
Getting set up with Xcode
A Note About the Next Lesson
Let's Create a Brand New Xcode Project
A Walkthrough of the Xcode Development Environment
Let's Design the User Interface!
Let's Incorporate Some Image Assets
How to Design and Add an App Icon
A Note About the Next Lesson
Run Your App on Your iPhone or Simulator
Join the Student Community
What You'll Make by the End of This Module
Cloning from GitHub and How to Download the L.A.B. Project Stubs
Let's Link Our Design to Our Code
Responding to User Interactions with IBActions
Bug Hint ?Thread 1: signal SIGABRT and "Not Key Value Coding Compliant"
[Swift Deep Dive] Naming Conventions Commenting and String Interpolation
Storing Data using Variables and Arrays
[Swift Deep Dive] Variables
[Coding Exercise] Variables
How to Randomise the Dice Images
?How to Solve the Error: "Maximum number of apps for free development reached"
[Swift Deep Dive] Constants the Range Operator and Randomisation
[Code Exercise] Constants
[Code Exercise] Randomisation
Download the Completed App Project
Tip from Angela - Dealing with Distractions
What You'll Make by the End of this Module
Setting up the Xylophone Project
The 5 Step Approach to Solve Any Programming Problem
[Swift Deep Dive] Functions and Scope
[Coding Exercise] Functions Part 1
Linking Multiple Buttons to the Same IBAction
[Swift Deep Dive] Functions with Inputs and Type Inference
[Coding Exercise] Functions Part 2
Playing Different Xylophone Sounds
Download the Completed App Project
Tip from Angela - Building a Programming Habit
What You'll Make by the End of this Module
Setting up the Egg Timer Project and Linking the Storyboard and ViewController
[Swift Deep Dive] If-Else Control Flow
[Coding Exercise] IF/ELSE
[Swift Deep Dive] Switch Statements
Conditional Statements Challenge Solution
[Swift Deep Dive] Dictionaries
[Coding Exercise] Dictionaries
[Swift Deep Dive] Defining and Unwrapping Optionals
[Coding Exercise] Optionals
Dictionary Challenge Solution
Implementing a Countdown Timer Challenge
Egg Timer Challenge Solution
Showing the Timer to the User with a Progress View
Calculating the Progress Percentage
Using the 5 Step Approach to Debug our App
Download the Completed App Project
Tip from Angela - Set Your Expectations
What You'll Make by the End of this Module
Setting up the Quizzler Project and Showing the Questions
Checking Answers using 2-Dimensional Arrays
[Swift Deep Dive] Structures Methods and Properties
[Coding Exercise] Structures
Creating a Question Struct
Giving the User Feedback and working with a ProgressView
Understand the MVC Design Pattern
Implementing MVC and Understanding Parameter Names
[Swift Deep Dive] Functions with Outputs and Return Types
[Coding Exercise] Functions Part 3
Refactoring to Implement the MVC Design Pattern
[Swift Deep Dive] Immutability
Using Mutating Functions to Track the Score
Download the Completed App Project
Tip from Angela - The 20 Minute Method
What You'll Make by the End of this Module
Learn How to Use a UISlider
Using the UISliders to Calculate the BMI
[Swift Deep Dive] Classes and Inheritance
[Swift Deep Dive] Structs v.s. Classes
How to Use the Docs in Xcode and Create a Custom UIViewController Class
How to Create a UI Programatically and Pass Data between ViewControllers
Segues and Navigation for Multi-Screen Apps
Adopting MVC by Creating a CalculatorBrain
[Swift Deep Dive] Optional Binding Chaining and the Nil Coalescing Operator
Use Optionals in Practice and Add the Finishing Touches with Colour Literals
Download the Completed App Project
Tip from Angela - Learning Before you Eat
Step 1: Clone the Starting Project
Step 2: Create IBActions and IBOutlets for the Calculator Screen
Step 3: Create IBActions and IBOutlets for the Results Screen
Step 4: Figure out how much Tip to Apply
Step 5: Figure out how Many People to Split the Bill Between
Step 6: Calculate the Bill
Step 7: Pass the Result to the ResultsViewController
Download the Completed App Project
Tip from Angela - Dealing with Lack of Progress
What You'll Make by the End of This Module
Dark Mode and Working with Vector Assets
Learn to use the UITextField
[Swift Deep Dive] Protocols
The Delegate Design Pattern
An Example of Protocols and Delegates in Practice
Understanding the OpenWeather API and URL Parameters
Use the URLSession for Networking
[Swift Deep Dive] Closures
Create a WeatherModel and Understand Computed Properties
Typealiases and a Protocols and Delegate Challenge
[Swift Deep Dive] Internal and External Parameter Names
Method Naming Conventions and Error Handling
Updating the UI by Using the DispatchQueue
[Swift Deep Dive] Extensions and Default Implementations for Protocols
Using Extensions to Refactor the ViewController
Using CoreLocation to get Location Data
What is a Property List (.plist)?
Download the Completed App Project
Tip from Angela - Mixing Knowledge
What You'll Make by the End of this Module
Navigation Controller Stacks and Segues
Typing Animations Timers and For Loops
Fibonacci Solution Code File
Introduction to 3rd Party Libaries
Cocoapods Installation Instructions
How to Install a Pod to your Project
Potential Problems with Pod Installation
How to use the CLTypingLabel Pod
How to Choose your Package Manager
Adding Firebase to your Project
Logging in Existing Users
Using a Constants File and Understanding the static Keyword
How to use a UITableView and Create a Message Model
Customising Cells in a TableView using a .xib File
[Swift Deep Dive] Casting as? as! as is and understanding Any
Database setup and Saving Data to Firestore
Retrieving Data from Firestore
Listening for Updates on Firestore
How to Sort Data retrieved from Firestore
How to Manage the Keyboard and use the Swift Package Manager
Finishing Touches: UI and UX Improvements
The ViewController Lifecycle Explained
The App Lifecycle Methods Explained
Download the Completed App Project
Tip from Angela - Sleep is My Secret Weapon
How to Build a SwiftUI App from Scratch
Download the Completed I am Rich SwiftUI Project
How to Create Complex Designs and Layouts using SwiftUI
Bug Alert! Text Not Displaying Correctly in Dark Mode
Download the Completed MiCard SwiftUI Project
SwiftUI Dicee Part 1 - Designing a Layout using Spacers and Subviews
SwiftUI Dicee Part 2 - Building in Functionality and Managing State
Download the Completed Dicee SwiftUI Project
H4X0R News Part 1 - Understanding the List and Identifiable Protocol
H4X0R News Part 2 - Networking in SwiftUI
H4X0R News Part 3 - The Observer Design Pattern
H4X0R News Part 4 - Using UIKit Components with SwiftUI
Bug Alert! List Only Shows 1 Line and Truncates Text
Download the Completed H4X0R News SwiftUI Project
Running your iOS App on a Mac with Project Catalyst
Tip from Angela - How to Solidify Your Knowledge
The Clear App Clone that You'll Build by the End of this Module
Subclassing a UITableViewController
TableView Delegate Methods and Accessories
Creating a Textfield Inside UIAlert to Add New Items
Why Do We Need Persistent Local Data Storage?
Persistent Local Data Storage Using UserDefaults
[Advanced Swift] The Swift Singleton Object
A Quick Note About the Next Lesson
Creating a Custom Data Model
[Advanced Swift] The Swift Ternary Operator
Restructuring Our App with MVC
The Concept of iOS Sandboxing
Encoding Data with NSCoder
Decoding Data with NSCoder
Introduction to Databases
How to Set up and Configure Core Data
How to Save Data with Core Data (Create in CRUD)
How to View Your SQLite Database Backend for Core Data
Reading Data from Core Data (Read in CRUD)
Updating Data with Core Data (Update in CRUD)
Removing Data from Core Data (Delete in CRUD)
How to Implement a UISearchBar and Querying with Core Data
How to Go Back to the Original List?
How to Create Relationship Graphs in Core Data
[Solution to Challenge] Setting Up CategoryViewController
Adding the Delegate Method
How to Save Data Using Realm (Create in CRUD)
Fetching Data from Realm (Read in CRUD)
Updating Data with Realm (Update in CRUD)
Removing Data from Realm (Delete in CRUD)
A Quick Note About the Next Lesson
Querying Data Using Realm
Review of How Our App Uses Realm for Data Persistence
Making Our Cells Swipeable
Inheriting from SwipeTableViewController
[Solution to Challenge] Inheriting from SwipeTableViewController
[Solution to Challenge] Persisting the Colour Property
Creating Gradient Flow Cells
A Quick Note About the Next Lesson
Updating the UI of the Navigation Bar
The Completed App Project
Tip from Angela - Location Location Location!
What You'll Need to Implement In-App Purchases
Download the Skeleton Project
Check out the Skeleton Project
Setup Your In-App Purchase on App Store Connect
Create an Inspirational Quotes App
Detecting When a User Wants to Make a Purchase
Implementing the In-App Purchase with Apple StoreKit
A Quick Note About the Next Lesson
Create Sandbox Users on the App Store to Test In-App Purchases for Free
Giving Users Access to Purchased Content
Restoring In-App Purchases
Download the Completed App Project
Tip from Angela - Use Accountability in your Favour
What We'll Make - Calculator
Download the Skeleton Project
Accumulating Numbers in the Calculator
Adding More Functionality to Our Calculator
Dealing with the Decimal Place
Refactoring with Computed Properties
Swift Structs vs. Classes - The Theory
Swift Structs vs. Classes - In Practice
How to Turn Our Model into a Struct
Guard Let vs. If Let When to Use Which?
Download the Completed App Project
Tip from Angela - Find All the Hard Working People
Installing CoremlTools using Python PIP
Converting a Caffe Model into MLModel
[Challenge] - Set up a UIImagePickerController
[Solution] - Setting up a UIImagePickerController
[Challenge] Getting Classifications from Our Model
[Solution] Getting Classifications from our Model
[Challenge] Adding Cocoapods to Our Project
[Solution] Adding Cocoapods to Our Project
[Challenge] Making HTTP GET requests to Wikipedia using Alamofire and REST
[Solution] Making HTTP GET requests to Wikipedia using Alamofire and REST
[Challenge] Parsing the JSON Result using SwiftyJSON
[Solution] Parsing the JSON Result using SwiftyJSON
Displaying Images From a URL using SDWebImage
[Optional Lesson] Creating the App Icon From Scratch and Styling the App
Download the Completed App Project
Tip from Angela - Deep Work
What We'll Make - Twitter Sentiment Analysis
Using CreateML for Natural Language Processing
How to Sign Up as a Twitter Developer
Setting Up the Swifter Framework
How to Fetch Live Twitter Data
Performing Sentiment Classification
Parsing Tweet Data in JSON
Updating the User Interface of Our App
Download the Completed App Project
Tip from Angela - Discipline Breeds Discipline
Introduction to Augmented Reality and ARKit
How to Setup and Configure Your Project for AR
How to Create a 3D Object in Augmented Reality
Bring the Moon into Your Living Room Using AR
How to Find and Import 3D Models for AR
How to Detect Horizontal Planes in the Real World
How to Detect Touch on Real World 3D Objects
How to Place Our Dice in 3D Using Touch
How to Animate 3D Objects in AR
How to Animate and Roll all the 3D Dice at Once
How to Remove Our 3D Objects from the AR Scene
[Optional Lesson] Refactoring Our Code for Better Readability
Download the Completed App Project
Tip from Angela - Dealing with Limitations
Introduction to App Design
Why Design is Important for an App Entrepreneur
Designer vs. Non-Designer Thinking
Understanding the Mood of Your Colour Palette
How to Combine Colours to Create Colour Palettes
Tools for Designing with Colour
Further Reading on Designing with Colour
Introduction to Typography
The Serif Type Family - Origins and Use
The Sans-Serif Type Family - Origins and Use
How Typography Determines Readability
How to Combine Fonts Like a Pro
Further Reading on Typography
What is User Interface (UI) Design?
The Tour Guide Approach to UI Design
The Importance of Alignment
What is Good Practice in Interaction Design
Colour in User Interface Design
The Many Ways of Designing Text Overlays
How to Be an Attention Architect
Further Reading on User Interface Design
What is User Experience (UX) Design?
Further Reading on User Experience Design
The Devil is in the Details
Differences in Icon Design
Flat Design vs. Material Design
Differences in Establishing Visual Hierarchy
iOS and Android Design Guidelines
Step1 - Design Patterns and Colour Palettes
Where to Find Design Patterns and Colour Palettes
Step 2 - How to Create a User Flow Diagram
Step 3 - How to Create Wireframes
Step 4 - How to Create Professional Mockups
Tools for Creating Mockups
How to Use Sketch to Create Mockups
[Optional] Watch me Create a Mock up Using Sketch
How to Use Canva to Create Mockups
Your Turn to Create Your Own Mockups
Tools and Resources for Creating Mockups
Step 5 - How to Create an Animated App Prototype
Tools and Resources for Creating Prototypes
Your Turn to Create a Prototype
Where to Find Free-For-Commercial-Use Image Assets
Where to Find Free-For-Commercial-Use Icons
How to Keep Designing and Improving
Tip from Angela - Step Up to Challenges
The Importance of App Marketing
The Fallacy of Build it and They Will Come
The Importance of Idea Validation
1. The Simplest Way of Validating Your Idea - The Starbucks Method
2. Using Google Trends to Estimate the Size of Your Market
3. The Landing Page Validation Method
How to Create a Landing Page Website in Less than an Hour
4. Creating a Minimum Viable Product
5. Using Crowd-funding to Validate and Fund Your Idea
How to Monetise Your App on iOS vs. Android
When You Should Create a Paid App
When to use In-App Advertisements
How You Thought About These Alternative Monetisation Models?
How to Get an App icon Designed without Breaking the Bank
Split Testing for Super Success
What Makes a Good App Icon?
The Dos and Don'ts of Making App Screenshots
Tools for Building Screenshots
Your First 1000 Customers
The All Important Landing Page
Blogging Your Way to Success
Content Marketing for App Downloads
How to Successfully Launch on Product Hunt
How to Launch on Beta List
How to Launch on Hacker News
If At First You Don't Succeed...
Social Referrals and Social Queuing
How to Make Social Media Work for You
Not All Press is Created Equal
How to Figure Out Which Journalists to Pitch
How to Find Anyone's Email Address
How to Pitch a Journalist
Just-Add-Water Journalist Pitch Email
Establishing a Relationship with a Journalist
What if You Still Can't Get Anyone to Write About You?
Final Tips on Getting Press
How to Get Featured on the App Store?
Work with the Corporate Mindset
Native vs. Cross-Platform Apps
Tips and Tricks for Getting Featured
What is App Store Optimisation (ASO)?
Top Tips to Optimise Your App Store Listing
Using Apple Search Ads as a Research Tool
Early vs. Late Game Strategies
Differences Between Google Play and Apple App Store
When to use Paid Advertising or App Marketing
Always Test Before You Advertise
Which Platform to Advertise On?
How to Setup Your Facebook Ad
Use Your Competitors' Ad Budget
Where Can I Find More Customers?
One Weird Trick to Get More Money from Apple
How to Get More 5 Star Ratings and Reviews
Use This Free Tools to Monitor Your App Reviews
How to use App Analytics to Increase User Retention
A 5 Second Way of Building a Web Page for Your iOS App
How to Use Bootstrap to Build Your App Showcase Website
It's Time to Work Out Your Marketing Strategy
Tip from Angela - Decision Fatigue