Protocol Oriented Dependency Injection
Description:Tight coupling between view controllers in your application can lead to difficult maintenance as you add and remove features. This video will explore how using Protocols can make our Dependency Injection mor...
Finding and Fixing Memory Issues
Description:Incorrectly managing memory in our applications can result in hard to find bugs and possible crashes. In this video, we will explore the Memory Graph debugging tool in Xcode and how you can use it to find an...
Using Container Views to Manage Complex Layouts
Description:When you have a complex view controller view, sometimes it is helpful to break up the view into manageable chunks. In this video we will show how you can use container views to simplify the construction of c...
Create a Welcome Message on Initial Launch
Description:Performing tasks when an application is first launched is a common practice to give users important information about the application. In this video, we will discuss one technique for implementing first laun...
Dynamic Stack Views
Description:UIStackViews are a relatively new addition to UIKit, appearing with iOS 9. They are quite useful because they eliminate the need for many Auto Layout constraints in common screen designs, making them easier ...
Description:We demonstrate using Dispatch Groups to rendezvous multiple simultaneous asynchronous tasks so that you can process all of their results at once, after the last one finishes.
Drawing Custom Controls
Description:Sometimes your app design calls for a control design that isn't provided in UIKit. In this video, we draw one from scratch!
Optional Return Values vs. Throwing
Description:This video Illustrates the differences between using optional return values or throwing errors for functions that can fail. The implementations are discussed and the pros and cons of each approach are discus...
Touch ID and Face ID
Description:Implementing Touch ID and Face ID using Apple's Local Authentication framework helps prevent unauthorized access to user's data. We will use the simulator to exercise different authentication scenarios. Whi...
Generational Analysis with the Allocations Instrument
Description:Generational Analysis with the Allocations Instrument can be used to track down memory growth issues. We're going to be tracking down a memory management issue that caught us here at Big Nerd Ranch by surpr...
Automating Breakpoint Actions
Description:While we all love Caveman Debugging, professional developers know their tools inside and out. In this screencast, debugging expert Mark Dalrymple will build on his previous screencast and show you some advan...
Creating App Icons for iOS
Description:App Icons are the nice, neat little wrapper for your app. They’re usually the first thing that users see before using your app, and they’re a constant reminder to your users of your app and your brand. In th...
Display Step Count Using HealthKit
Description:HealthKit provides iPhone users with a rich set of activity and health data that is available for applications to use. In this video, we will cover the basics of getting access to HealthKit and visualizing a...
Writing Data to HealthKit
Description:HealthKit provides a rich data store on iOS for tracking many types of data related to a users health. In this video, we will see how an application can write data to this store. After this video you can app...
How Design Evolves within Apple's HIG: Adding a Popover with Photo Upload
Description:Want to know how truly great designers work with the Apple HIG? Let’s watch along as we solve a challenging design issue and use the HIG to guide our decisions.
Handling Async Results
Description:Throwing errors and completion handlers have pros and cons, and can’t be used in all situations. Here we examine some strategies for writing elegant async error-handling code with closures and associated-val...
Importing Models into CoreML
Description:Apple released Core ML framework at WWDC 2017, which allowed developers to integrate machine learning into their iOS applications. In this screencast, we’ll show you how to import Keras image classification ...
Description:In this screencast, we’ll learn how to use Swift’s assertion function to code defensively. By the end of this video, you’ll be able to use the assertion functions to help you write stronger, more robust code.
Xcode Inline Documentation
Description:In this screencast, you'll earn how to document your Swift code using Xcode’s Markup support, and Jazzy to create an informative API.
Asynchronous Unit Testing
Description:In this screencast, we’re going to look at writing unit tests for asynchronous behaviors in an app.
Adopting Configuration Settings Files in Xcode
Description:In this screencast, we will explore how to use Xcode’s Configuration Settings Files - or xcconfig files - and improve our ability to tame the complexity of managing project settings.
Xcode Configurations vs. Schemes
Description:Targets and configurations and schemes; Oh my! Confused by these Xcode concepts? Curious how using multiple build configurations coupled with schemes can avoid the multiple-target mess? If you’re wondering w...
Using Generics in Swift
Description:Generics allows for easy code reuse helping you write less code with fewer mistakes. In this video, we’ll learn how and when to use generics in your Swift apps by illustrating examples of problems that gener...
Asynchronous UI testing
Description:Xcode UI tests are asynchronous in that they simulate end user interaction with your application. In this screencast, learn how to write tests that exercise your app at the user interface level, handling asy...
Creating an App Widget
Description:Mobile devices are all about convenience. Users want to get the information they need from your app quickly and easily. Apple has added the Today view with widgets for just this reason. Widgets provide app u...
Unit Testing: What, Why, and How
Description:Whether you’ve never written a unit test, or are just looking for a way to add unit tests to some existing troublesome code, this video will walk you through the fundamentals of unit testing on iOS with real...
Description:Trouble getting layouts to fit the keyboard? In this screencast, we'll show you how to handle your layouts changing due to the keyboard. After this series, you will have several different tools for avoiding ...
Description:You've seen these things in your code. @IBAction. @escaping. @objc. @autoclosure. But what are they? How do they differ from other Swift language features? If you want to understand what is going on un...
IBInspectable and IBDesignable
Description:In this screencast, you will learn how to use @IBDesignable and @IBInspectable to render and configure your custom views in Interface Builder at design-time.
Setting Up StackViews Inside ScrollViews
Description:In this screencast, we’ll show you how to set up a StackView inside a ScrollView, this will help you to create views that have to show list of related data without use table views or collection views.
Using Result with Network Requests
Description:When working with networking code, most APIs send back optional types (usually an error and one or two other types such as a response and data), but there is no compile-time guarantee that all of these will ...
Storing Secure Data in the Keychain
Description:Storing secure data (like login data) in UserDefaults or the file system is not safe. The keychain is an encrypted database where secure data such as credentials, tokens, and notes should be stored. In this ...
ReactiveSwift #1 - Getting Started
Description:ReactiveSwift is a reactive programming library that is built around the concept of streams of values over time. In this screencast, we’ll learn about the basic concepts of reactive programming and how it wo...
ReactiveSwift #2 - Signal vs. SignalProducer
Description:Learning the core concepts of ReactiveSwift will eventually help you in implementing ReactiveSwift within your app. A reactive programming library like ReactiveSwift provides a uniform architecture for imple...
ReactiveSwift #3 - Operations
ReactiveSwift #4 - Implementing UI Bindings
ReactiveSwift #5 - Implementing MVVM
Description:In this tutorial, we are going to refactor an existing app written imperatively and apply all that concepts and principles we have learned in the Introduction to ReactiveSwift series. We will create a `Signa...
SwiftUI #1 - Using Views
Description:In this tutorial we’ll explore Views, a fundamental building block of the SwiftUI framework which can help you create complex views with less code and iterate faster.
SwiftUI #2 - Exploring View Modifiers
Description:In this tutorial, we will look at the effect of View Modifiers and how they are used to customize the display, behavior and interactivity of views.
SwiftUI #3 - Build a Login Form using Stacks
Description:In this tutorial, we will explore container views called Stacks to create a login form in SwiftUI.
SwiftUI #4 - Implementing a Todo list using Lists
Description:In this tutorial, we will see the power of SwiftUI's declarative programming by implementing a List view to manage a Todo list.
SwiftUI #5 - Adding State and Binding to Make an Editable List
Description:In this tutorial, we will make the Todo app dynamic by adding state and binding using SwiftUII and the Combine Framework.
SwiftUI #6 - Animation and Transitions
Description:In this screencast, we will take a look at how animations and transitions work in SwiftUI.
SwiftUI #7 - Hosting SwiftUI in a UIViewController
Description:In this screencast, we will learn how to host a SwiftUI view in a UIViewController.
SwiftUI #8 - Embedding a UIView or UIViewController in SwiftUI
Description:In this screencast, we will see how to embed a UIView or UIViewController in SwiftUI.
SwiftUI #9 - Creating an Asynchronous Image View in SwiftUI
Description:In this screencast, we will learn how to asynchronously load an image in a SwiftUI Image view from the network.
SwiftUI #10 - Creating a Swipeable Card Interface in SwiftUI
Description:In this screencast, we will implement a card swiping interface viewed in many dating apps. We will make use of the drag gesture to implement the swipe functionality since there is no Swipe gesture in SwiftUI...