Core Data in SwiftUI: A Step-by-Step Guide

Learn how to efficiently manage and persist data in your SwiftUI app with Core Data

ML Musings
3 min readJan 17


Photo by Caspar Camille Rubin on Unsplash

Want to make data management in your SwiftUI app a breeze? Look no further!

Core Data is a powerful framework that allows developers to easily manage and persist data in their iOS, macOS, and watchOS apps. It’s a great choice for data storage and retrieval in SwiftUI apps, as it provides a convenient way to manage and manipulate data without having to worry about low-level details such as SQLite queries.

In this article, we will go through the steps of integrating Core Data with a SwiftUI app, including creating a new Core Data model, creating a Core Data stack, and using Core Data in a SwiftUI view.

Create a new Core Data model

The first step in integrating Core Data with your SwiftUI app is to create a new Core Data model. This can be done by going to File → New → File, and selecting “Data Model” under the “Core Data” section. Give the model a name and add the entities and attributes you want to use in your app.

Create a Core Data Stack

Once the Core Data model is created, you’ll need to create a Core Data stack to manage the Core Data objects. This stack typically consists of the following components:

  • A managed object model: This is an instance of NSManagedObjectModel, which represents the schema of the Core Data model.
  • A persistent store coordinator: This is an instance of NSPersistentStoreCoordinator, which is responsible for managing the persistent store (i.e. the SQLite database) that holds the app’s data.
  • A managed object context: This is an instance of NSManagedObjectContext, which is used to manage the Core Data objects in memory.

You can use the code below:

import CoreData

class CoreDataStack {
private let modelName: String

lazy var managedContext: NSManagedObjectContext = {
return self.storeContainer.viewContext

init(modelName: String) {
self.modelName = modelName

private lazy var…



ML Musings

✨ I enjoy pushing the boundaries of JS, Python, SwiftUI and AI. You can support my work through coffee -

Recommended from Medium


See more recommendations