Top-notch video tutorials for Swift developers

Curious? Get three great screencasts FREE

Thousands of developers use NSScreencast to stay on top of iOS development.

ExxonMobil
Venmo
Thoughtbot
The Working Group
Medium

Updated Regularly

Bite-sized videos on iOS development.

The iOS landscape is large and changes often. With short, bite-sized videos released on a steady schedule, NSScreencast helps keep you continually up to date.

Up to date with Xcode 12 and iOS 14

We cover the latest and greatest to get you up to speed quickly.

UIKit, SwiftUI, and macOS

In our catalog you'll find a wide variety of topics and UI frameworks.

Swift Language

Increase your knowledge of the Swift language and take advantage of new Swift language features as they are developed.

High Quality Videos

We stress the details. Each screencast is carefully produced in HD quality.

Short and Focused

We don't want to waste your time. Most videos are between 10 and 20 minutes long.

Any Device

Stream on the web or use our native apps for iOS or the tv.

Team Plans

Get NSScreencast for your whole team. Discounts start at 5 seats

Have I mentioned lately how awesome NSScreencast is? No? Worth the subscription. Check it out if you’re an iOS developer. Or even if you’re not and you want an example of how to do coding screencasts well.

Got tired of dead-end googling so I checked to see if @NSScreencast had covered what I was looking for. Of course he had, 4 years ago. Should have checked there first.

One 13-minute episode of @NSScreencast just paid for the yearly subscription fee in amount of time saved. Do it.

Seriously great stuff even for seasoned developers. I’ve learned a good amount from Ben’s videos.

You can really expand your development horizons in just a few minutes a week with NSScreencast.

Random PSA for iOS developers: @NSScreencast is a great resource, and worth every penny. It’s high quality, practical, and honest.

Can’t say enough good things about @NSScreencast There is gold in the Road Trip DJ Series.

I just reuppped my subscription to @NSScreencast. [An] indespensible resource if you’re into iOS or Mac Development.

Just finished @NSScreencast series on Modern CollectionViews. Strongly recommended. Programmatic UI, nicely structured code, easily approachable explanation style. 👌

There are 63 episodes with tag 'swift'   Clear search
  • #517

    Async / Await

    In this episode we will look at two ways of generating async values with AsyncStream. We'll examine the difference between the push and pull models and how to deal with back pressure.

  • #516

    Async / Await

    We explore how we might encapsulate logic within an AsyncSequence and introduce the need for a type erased version. Type-erasure has some pros and cons and in this video we will explore how to create one called AnyAsyncSequence and how we can use it.

  • #515

    Async / Await

    In this episode we will see how to create and use our own AsyncSequence, which allow us to iterate over values that can arrive asynchronously. We'll see how this compares to traditional sequences and how to make use of AsyncIterator to build our own AsyncSequence implementations.

  • #514

    Async / Await

    The unit of work in Swift Concurrency is the Task. In this episode we will see how tasks are created and structured, how to run work in parallel, and how to handle cancellation by aborting work or returning partial results.

  • #513

    Async / Await

    Actors are a new first class concept in swift. In this episode we will explore the problem they solve and how to use them to avoid race conditions which can lead to inconsistent results or even crashes.

  • #512

    Async / Await

    Continuations are great for adapting completion-handler APIs to the new async await world. But what about delegate callbacks, which happen in an entirely separate method? In this episode we will adapt 2 delegate APIs into async await to see how this works.

  • #511

    Async / Await

    With Continuations we can bridge the non-async world and make it async. Continuations allow us to take the result of a completion block and turn it into an async flow. In this episode we will see the difference between checked and unchecked continuations as well as their throwing variants.

  • #509

    Async / Await

    In this episode we will see how we can run tasks concurrently with concurrent for loops, which is useful when the number of items you want to process is dynamic. With Task Groups you can process results asynchronously and assemble the results in a safe way.

  • #508

    Async / Await

    In this episode we will show how the async await keyword can simplify asynchronous code, reading top-down as if it were synchronous, but without blocking any threads. We'll also see how async let can allow you to process multiple values concurrently.

  • #506

    Modular Project Architecture

    Now that we've seen how to setup a feature module, we'll also need to decide how best to share a feature's resources and deal with dependencies.

  • #493

    Localizing Your App

    Let's quickly review how to work with the Locale object. Then we can use various locales in conjunction with NumberFormatter and ListFormatter to have localized output provided for us.

  • #490

    Codable Witnesses

    In this episode we introduce a new open source library called Swift Coding that takes all of these concepts and wraps it up into a Swift Package you can use in your own projects. We give a tour of what the library can do and how you can use it.

  • #488

    Codable Witnesses

    Last time we talked about the Encodable protocol. This time let's look at the Decodable protocol. We explore the general concept, then introduce zip and map as utilities to compose smaller decodings into larger ones.

  • #487

    Codable Witnesses

    We start exploring the concept of converting Encodable into an Encoding protocol witness. We discover how to clean up our code and make it fit in with `JSONEncoder`’s existing API. We then break down our example into smaller pieces and discuss how we can leverage pullback and functional composition to build bigger pieces out of smaller ones.

  • #486

    Codable Witnesses

    In the next few episodes we will explore the concept of Protocol Witnesses. This is an advanced topic that can be somewhat hard to approach, but in learning about Protocol Witnesses you will see how we can leverage the Swift language and functional programming to do some really cool things.

  • #480

    Ever wanted to translate from one type to another, for instance mapping from network models to core data objects? In this episode we will explore how to leverage Swift Keypaths to create a mapping between models. Along the way we'll run into a limitation of key paths and then talk about how to work around it.

  • #476

    Layout in Code

    The built-in way of adding constraints in code requires quite a bit of code and is a bit cumbersome to write. I believe that we should aim to reduce friction when writing code like this to make it easier to add new views and change your layout. SnapKit is a pretty useful dependency that gives you a DSL for making autolayout constraints. In this episode we'll integrate SnapKit into the project and simplify our existing layout code.

  • #475

    Layout in Code

    If you look at our view controller now, it is full of code that mostly is dealing with constraints, subviews, and overall layout. This is really the job of the view. In this episode we will extract this into a new view class. We'll also introduce a reusable base class that will handle the required view initializer dance for us, making the job of creating custom view classes a bit easier.

  • #469

    Command Line Swift

    Now that we have some streaming output from the ffmpeg process, we can take this and create a custom progress bar. Since this could useful in other utilities we can create it as a separate Swift package and import it using a local file reference.

  • #468

    Command Line Swift

    When dealing with long running tasks it would be nice to be able to gather output as the task runs and not hang until the entire process is done. In this episode we will extract some useful information out of ffprobe, so we can get the total number of frames in a video file, and then kick off ffmpeg to encode the video. We'll use the Subprocess package to provide a simpler interface over gathering output from a pipe as it is sent, rather than waiting for the end.

  • #464

    Command Line Swift

    I use a collection of command line scripts that help me in the production of NSScreencast episodes. Most are written in Ruby, which is a language I know and love, and some are written in bash, which is... a language. I sometimes wonder what these scripts would look like if I were to write them in Swift. So in this new series I'm going to explore rewriting a script that I use to encode videos using Swift. In this episode we'll bring in the excellent Swift Argument Parser library and use it to give us a clean and consistent command line interface to start with.

  • #462

    Foundation has a wonderfully useful support for deal with measurements like distances, durations, temperatures and more in Swift. The Measurement class combines with a Unit type to constrain the measurements into their own domains. With this you can get functionality like conversion and addition. With MeasurementFormatter we can format these values for display in our UI based on the user's locale. In this episode we will explore how to use this API, how to extend the existing dimensions to add new measurement values, and how to create your own domain of measurements. For this we will model Throughput of Items in the game Factorio.

  • #427

    Property wrappers are turning out to be super useful! In this video we'll look at an open-source library called ValidatedPropertyKit, which gives you property wrappers for validating user input. With it you can check for ranges, non-empty strings, regular expressions, or extend it with your own.

  • #423

    Swift 5.1 introduced a powerful new feature to the language: Property Wrappers. In this video we will take a look at how to write property wrappers and how to use them to simplify code in our apps.