
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
In this lecture, we will learn how to get Xcode downloaded from Apple's Developer portal and how to get started with iOS development.
Create an Xcode iOS app project, name it, and set the interface to storyboard using Swift. The course covers Swift UI as an alternative and mentions Objective-C and Core Data.
Learn how to declare constants and variables in Swift using let and var, perform operations with operators, and handle type safety and casting in a Swift playground.
Explore strings and characters in Swift, including multi-line strings, Unicode and extended grapheme clusters, and string interpolation, concatenation, and safe indexing with start index and isEmpty.
Explore how Swift strings use Unicode grapheme clusters, and learn to navigate with start, end, and offset indices; insert, remove, iterate, and understand substrings and ranges for robust string handling.
Explore collections in Swift, including arrays, sets, and dictionaries, as generic containers for strings, numbers, and other objects, with arrays of arrays, type inference, indexing, append, and playgrounds in Xcode.
Explore sets as a Swift collection type, learn how to declare, insert, remove, and check membership; perform union, intersection, subtraction, symmetric difference, and evaluate subsets, supersets, and equality.
Explore dictionaries in Swift, learning how to declare, access, update, and remove key-value pairs with subscripts, optional handling, and iteration, including sorting keys.
Master Swift control flows with for loops to iterate arrays, dictionaries, and ranges, print elements, and generate sequences with stride. Explore practical examples from colors and airport codes.
Explore repeat-while control flow, where the body runs first and the condition is checked. Increment index by two, print it, and break when it reaches ten.
Use if else and else if to evaluate conditions and execute code blocks, using Celsius temperature checks for cold, warmer, or very warm outcomes, with break and continue in loops.
Explore how Swift switch statements work, including ranges and default cases. Learn value binding, tuples, wildcards, where clauses, compound cases, and follow-through to write exhaustive, readable iOS code.
Explore swift functions, including parameters, return types, multiple returns with tuples, argument labels, default values, variadic parameters, and inout to modify inputs.
Master Swift optionals by learning unwrapping techniques, optional chaining, guard and if let, and nil coalescing to prevent runtime crashes and write safer, predictable code and short-circuit evaluation.
Explore closures in Swift: learn how self-contained blocks capture values, use closure expressions to sort arrays, and leverage type inference and operator methods for concise, unnamed functions.
Explore closures in Swift, including trailing closures, escaping closures, and autoclosure, and learn how they capture context, work with completion handlers, and support asynchronous operations.
Explore Swift enums, including cases, raw values, associated values, and recursion, and learn to use switch statements, optional handling, and iterable enum capabilities.
Learn how structs and classes in Swift store data with properties and methods, compare by value versus reference, understand initialization, protocols, identity, equality, and reference counting.
Explore inheritance in Swift, creating a base and subclass hierarchy, overriding and calling super, using final to block overrides, and applying didSet and willSet observers for dynamic behavior.
Learn how protocols enable delegation in swift by modeling an airport delegate, using weak references to prevent retain cycles, and choosing between class and struct implementations, including mutating considerations.
Learn how extensions add behavior to existing types and enable protocol conformance, including flyable, conditional array conformance, and organizing extensions across files.
Explore synthesized implementation for conforming to equitable, hackable, and comparable protocols. See how primitives enable automatic hashing and equality, with ball examples and enum ordering, without manual implementations.
Learn to treat protocols as types in collections, implement protocol inheritance, and extend types to conform to flyable and land double, with description and conditional unwrapping.
MVC is a design pattern that Apple recommends to use for iOS. In this lecture we will learn what is MVC and how it applies to iOS development.
Explore how table views organize data in a single-column list with rows, sections, and cells, powered by the MVC pattern, data sources, and delegates, plus navigation to details.
Learn to create a starting iOS project in Xcode for the Magic Travel app, using Swift with UIKit and storyboard, explore table views, and apply the MVC pattern.
Learn how to add a table view to a storyboard, connect it to the view controller via an IBOutlet, and understand basic constraints in a UIKit model-view-controller app.
Discover how a view controller conforms to the UI table view data source and delegate, implements row counts, and dequeues reusable cells with index paths.
Master the UI table view data source protocol to drive sections, rows, and cells using index paths, register cells with identifiers, and debug via Interface Builder and breakpoints.
Learn how to handle tapping a table view row with the UI table view delegate and did select, by extending the view controller and wiring the delegate in storyboard.
Explore displaying dynamic secondary text in a table view cell using content configuration, by mapping countries to continents with a dictionary and optionally using prototype storyboard cells.
Learn how to navigate between screens in iOS apps using modal presentation and pushing on a navigation stack, including creating a detail view controller and handling dismissal.
Configure constraints with hugging and compression resistance priorities to control label sizing. Use Interface Builder, storyboard, and stack views to anchor and test constraints across iPhone and iPad.
Install CocoaPods for Swift and Objective-C with sudo gem install cocoapods or brew install cocoapods, then run pod install or pod update to manage libraries such as web image.
Troubleshoot cocoa pods installation errors by managing Ruby versions with LLVM, removing and reinstalling Ruby 2.6.0, then running pseudo gem to install cocoa pods.
Identify your shell with echo $0, then edit the appropriate profile and source $HOME/.rvm/scripts/rvm so the RVM and pod commands work in the new terminal window.
Set up a podfile for your Xcode project by running pod init and defining targets such as the main app and tests. Prepare for installing CocoaPods in future lectures.
Install and manage iOS libraries with CocoaPods by editing the Podfile to add web image, Alamo Fire, and PureLayout, then run pod install.
Organize an Xcode project by structuring folders and files, managing pods and tests, and configuring signing, deployment targets, app icons, launch screens, and version control for robust iOS apps.
Organize your Xcode project with app, data layer, and ui folders, grouping view controllers, views, and storyboards while preparing for networking, models, and model view view model (mvvm) design patterns.
Learn to use a quotable type alias that combines decodable and encodable to model incoming json with a school struct and coding keys.
Explore the basics of HTTP and HTTPS, how clients request resources and receive JSON data from web servers, with attention to URLs, protocols, query parameters, and response codes.
Explore networking with iOS standard services by building a URLComponents-based request, adding URLQueryItem tokens, creating a URLSession data task, and decoding JSONDecoder.
Learn networking with Apple standard services, decode json with the Apple json decoder, handle errors via do-catch, and implement api calls from a view controller toward a future view model.
Practice networking with Apple's standard services by fetching data via URLSession, handling errors, and decoding JSON into a School array with JSONDecoder in an asynchronous data task.
Learn to perform network requests using Apple standard services and Alamofire via CocoaPods, validate HTTP status, decode JSON into school objects with Codable, and handle results with trailing closures.
Learn to use Alamofire to fetch data, validate 200 responses, and parse JSON into Decodable models with a response wrapper, including handling success or failure and optional pagination.
Learn to implement completion callbacks using Swift result and closures to handle asynchronous network responses with Alamo Fire, including escaping closures, trailing closures, and protocol updates for robust data retrieval.
In this course you can learn about iOS 16, Swift 5, iOS App Development using UIKit & SwiftUI and latest frameworks from Apple, best engineering and industry practices on how to develop iOS apps that scale.
The course has 170+ downloadable Xcode project resources, 10+ live coding exercises, 4+ coding challenges, 5+ quizzes, 2 practice tests, 4+ iOS apps and 165+ course materials such as video course lectures, slides and external references to help solidify course materials.
The main focus of the course will be:
get familiar with iOS development environment: Xcode 14 and iOS 16
learn what's new in iOS 16
learn fundamentals of Swift5
learn about Swift Charts
learn about CoreData & UserDefaults
learn how to build apps using Storyboards, SwiftUI and programmatically
master best engineering and industry practices related to iOS development
learn how to use popular iOS frameworks: Combine, MapKit, CoreLocation
get experience building apps with Networking using Alamofire and URLSession
learn how to build UI both using Autolayout and programmatically using PureLayout
get experience with design patterns such as MVC & MVVM
learn how to use Notifications & Delegates
learn how regular expressions in Swift 5.7 work
Swift is a powerful language that Apple recommends to use for iOS development. We will explore basics and fundamentals of Swift 5 language in addition to learning more advanced concepts in Swift 5.
We will learn through examples how to use important components of iOS (Table Views, Collection Views, Text Views, Buttons, Text Fields).
One of the important best practices of development is to use unit tests. Hence, we will also learn how to write unit tests in iOS.
We will learn how to use the latest SwiftUI to build iOS apps. SwiftUI is a next generation tool developed by Apple that can be helpful to build iOS app fast in using responsive and declarative statements. Combine is one of the latest additions from Apple.