Logomark
A shot of to go with your morning coffee.

Curious? Get 3 great screencasts FREE.

Xom Venmo Tb Eyefi Twg Medium

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

Video Training for iOS Developers

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.

  • Quality content This isn't Youtube. Each screencast is carefully produced in HD quality.
  • Team Plans Get access for your whole team. NSScreencast makes for great lunch & learns.
  • Any Device Stream on the web, or use one of our apps for  tv, iPhone, and iPad.
Why NSScreencast?

Founded in 2012, NSScreencast has been releasing a new screencast each week for more than 5 years. With short videos you can learn a lot over time without a huge time commitment.

NSScreencast offers the largest collection of iOS development screencasts on the internet. With the range of videos that NSScreencast offers, there is something for people of every skill level.

Bite-sized screencasts on iOS and Mac development.

#278
278 swift 4 json parsing
Swift 4 finally answers the long-debated question of: How should I parse JSON with Swift? In this episode we'll take a look at the new Codable protocol in Swift 4, and talk about how to use JSONEncoder and JSONDecoder to serialize your objects into JSON and back again.
#277
258 hello cloud kit part 1
We finish the CloudKitNotesManager by providing a generic save and delete methods that we can use for any CKRecordWrapper type. We also implement a custom notification when a note is saved so that we can update an interested view controllers to update their UI.
#276
258 hello cloud kit part 1
In this episode we implement a CloudKit version of our NotesManager protocol. Along the way we'll implement a reusable query function and run into a limitation with Swift generics that we will have to work around.
#275
258 hello cloud kit part 1
Since our model objects will be backed by a CKRecord, we will leverage computed properties to marshal values back and forth to the record. Doing so in a type safe way gets pretty redundant, so we can reuse a lot of this boilerplate code by extracting a protocol we’ll call CKRecordWrapper. We can leverage this protocol to give us type-safe access to record keys and to provide default implementations of identifier, modifiedAt, and createdAt fields.
#274
258 hello cloud kit part 1
So far in this series we've been using CloudKit directly from our controllers. This can be somewhat limiting. It requires you to be online or everything fails, we may want to add a caching layer, or we might want to use CloudKit as a network synchronization layer, rather than a primary data store. In this episode we'll examine an architecture that will allow you to decouple your view controllers from CloudKit as a first step to achieving more flexibility with your CloudKit implementation.
#273
273 storyboard initializable
In the refactoring series, Soroush mentioned a protocol he uses to make initializing view controllers from a storyboard as easy as adopting a protocol (and completely type-safe). In this episode we will build this using Swift protocol extensions. The end result is something you can easily carry with you from project to project.
#272
268 coordinators
This episode wraps up the refactoring series by implementing the transition to the PhotosViewController. Ben and Soroush talk about the overall process and benefits of coordinators as a pattern to clean up view controllers and organize logic around how your app is stitched together.
#271
268 coordinators
Moving on to the next segue in our storyboard, this time Ben and Soroush tackle the Add Review flow. They discuss naming of delegates, the ideal place to perform logic such as preparing a model to be saved and where mutations to the model live. They end up with a view controller that is completely decoupled from the AddReviewViewController and a better picture of what the coordinator tends to look like.
#270
268 coordinators
In this episode, Soroush and Ben create the first delegate for a view controller in order to pull out the behavior a user might trigger by interacting with the view controller. This delegate conformance is added to our coordinator so this flow logic is in one place (and not in the view controller).
#269
258 hello cloud kit part 1
Saving records includes uploading any attached assets. For a good user experience, we should show the user the progress for any records that are being saved (or downloaded). In this episode we’ll see how we can get that data and show a progress bar for uploading photos. To do this we will take a look at a new class, CKModifyRecordsOperation.
#268
268 coordinators
What is the Coordinators pattern, and why is it useful? Soroush and Ben discuss this and then get started refactoring an existing application that uses Storyboards into using Coordinators. We implement our first AppCoordinator and wire it up on launch.
#267
258 hello cloud kit part 1
Fetching records in CloudKit fetch the entire record, including downloading any associated assets. This makes it not feasible to fetch many records at a time. Instead, we'll see how to fetch a subset of each record, keeping the overall size of the request small. We'll also introduce paging to request a single visible set of records at a time.
#266
258 hello cloud kit part 1
Working with images in CloudKit can be tricky. There's no server code you can add to process images to create multiple versions, for instance. In this episode we'll see how we can pick an image from the user's photo library and upload them to a new Photo record, which contains original and thumbnail versions of the uploaded picture. We'll leverage some helper methods to automatically translate from a UIImage to a CKAsset and vice-versa.
#265
265 3d touch preview interaction
Have you ever wanted to replicate the 3D Touch actions that are available in Mail.app? How do you make these custom interactions beyond the simple action sheet that you get out of the box? In this episode Conrad walks us through adding custom interaction using 3D Touch to a list building application.
#264
258 hello cloud kit part 1
We'll wrap our Review record in a model object, then create a method to show all reviews for a given restaurant. We'll then look at how to display the reviews and how to add a new review using the UI.
#263
258 hello cloud kit part 1
We learn how to link records together to create relationships between records using CKReference.
#262
262 peek and pop
Conrad Stoll shows us how to implement Peek and Pop using 3D Touch on supported devices. We learn how to do it in code versus the storyboard, as well as how to customize the display and presentation of the previewed view controller.
#261
261 sourcery
Writing boilerplate code can get tedious and boring. It can also lead to code duplication, which means it becomes a liability to keep in sync. Sourcery is a code generation tool that can help leverage your existing types and reflect on them in order to generate useful bits of code. In this episode Sam Soffes shows us how to install and use Sourcery, how to integrate it with Xcode’s build system, and how to create a simple Sorcery template to automatically count the number of items in a Swift enum and add it as an option.
#260
258 hello cloud kit part 1
Now that we have saved records in CloudKit, how do we fetch them again? This video covers how to fetch a single record by ID, how to use full-text search to match partial terms, how to return all records (with paging support) and how to query by location.
Shape
#259
258 hello cloud kit part 1
In order to use CloudKit to read or write private data (or to write in the public database) the user will have to be signed in to iCloud on their device. If they are not, they'll not have a great experience, and things won't work. In this episode we'll check the account status before trying to save a record in CloudKit. We'll also respond to the notification to know when the user's account status has changed so we can react accordingly.
Shape
#258
258 hello cloud kit part 1
The first episode in a new series on CloudKit, here we see how to setup our project to use CloudKit as well as how to create and save our first record.
#257
257 watch os notifications part 2
In this episode, Dory finishes up implementing notifications for the Beer Button watch app. We learn how to configure and send timed notifications, and how to respond to those on the watch.
#256
256 watch os notifications part 1
In this episode Dory Glauberman covers how to set up notifications in your application on both the iPhone and Apple Watch using UNUserNotificationCenter. It highlights best practices for requesting notification authorization and demonstrates how to fire a sample notification for the Beer Button watch app.
#255
255 pin input
Sam Soffes walks us through an elegant way to handle 4-digit PIN input, for cases where you have a software lock screen to your app, or perhaps a 4 digit confirmation code is sent to you via SMS and you need to type it in to continue. Often this type of thing is done with four text fields side-by-side, with awkward delegate implementations to manage focus, etc. Instead, Sam shows us how to leverage the UIKeyInput protocol and create a much cleaner implementation.