Skip to content

iOS Persistence and Core Data

Free Course

Learn how to store data between app launches

Related Nanodegree Program

Introduction to Programming

About this course

Persisting data is a core skill for any iOS developer. This course will teach you three techniques for storing data to your device’s hard drive: NSUserPreferences for small amounts of data, the Sandbox for files and Core Data when you have to play in the Big Leagues!

What you will learn

  1. Simple Persistence
    • Learn about simple persistence and how to save small pieces of data.
    • Set user preferences using NSUserDefaults in an existing app.
    • Enable an app’s user preferences to appear in the Settings app.
  2. The iOS File System
    • Learn about the iOS File System, and your app’s sandbox.
    • Read and save files using NSFileManager in an existing app.
    • Understand the performance implications of atomic (all-at-once) file operations.
  3. Introducing Core Data
    • Meet Core Data, Apple’s framework for managing the data layer.
    • Explore what a data layer is.
    • Convert a non-Core Data note-taking app to have a Core Data model.
  4. The Core Data Stack
    • Set up the classes we need to get Core Data up and running.
    • Use the stack to manage model object creation and deletion.
    • Persist changes so that data stays put when you restart the app or device.
  5. Simpler Code with Core Data
    • Enable user interfaces to reactively update whenever the model changes.
    • Set up an NSFetchedResultsController to observe data changes and notify the UI.
    • Create a new version of a data model, modify a table view to work with a fetched results controller, and turn on caching.
  6. Core Data & Concurrency
    • Update the data model and safely migrate user data between versions.
    • Work with multiple managed object contexts for different types of tasks.
    • Keep the user interface responsive by sending lengthy tasks to a background queue.

Prerequisites and requirements

This course assumes extensive iOS experience. Specifically, you’ve built several apps, know how to use core iOS libraries, and are familiar with networking and MVC design principles. Introduction to iOS App Development with Swift, UIKit Fundamentals, and iOS Networking with Swift are good courses to take if you need to familiarize yourself with these concepts.

The course also assumes basic familiarity with git. Specifically, you will need to be able to clone git repositories and checkout branches specific to each lesson. How to Use Git & GitHub is a great option if you need to brush up on these skills.

You will need access to a Mac computer running OS X 10.9 or later. However, you do not need an iPad or iPhone to complete the activities. All exercises can be completed using the iOS simulator built into Xcode.

See the Technology Requirements for using Udacity.

Why take this course?

Just like computers, your iPhone has two types of memory: main memory (RAM) and the hard drive. In all the apps you’ve written, you’ve interacted with RAM, but this memory is limited, and it’s important that the apps you design use it as efficiently as possible. To use the RAM efficiently it is important to be able to store data on the hard drive.

It is also important for your apps to maintain state when they are turned off. The apps you’ve built probably aren’t persistent, meaning that they don’t save their state to the device’s hard drive. As RAM is volatile, data is lost when the app stops running. In this course, you’ll learn how to persist the state of the device using NSUserDefaults and Core Data.

Learn with the best.

  • Fernando Rodriguez
    Fernando Rodriguez


  • Eden Shapiro
    Eden Shapiro


  • Kate Rotondo
    Kate Rotondo