Core Data Best Practices by Antoine van der Lee

Swift Version Twitter

Best Practices in Core Data explained within a demo application as presented during NSSpain.

Included in this project

  • Core Data Stack Setup
  • Fetched Results Controller
  • NSFetchRequests
  • Diffable Data Sources
  • Optimised saving
  • Constraints
  • Derived Attributes
  • Transformables
  • Validation
  • Life Cycle Events
  • Batch Insertions
  • Batch Deletions
  • Persistent History Tracking
  • Threading
  • Core Data and Combine
  • NSExpressionDescriptions
  • Unit Testing Core Data


I would love for this project to grow as a source of best practices regarding Core Data. I’ll try to add my own learnings to this project too. There are many sources available on the internet but we lack a bit of example code. Hopefully, this way, we make it easier to adopt best practices in Core Data.


  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.


Core Data Best Pratices is available under the MIT license, and uses source code from open source projects. See the LICENSE file for more info.


This project is originally created by Antoine van der Lee based on experienced from developing Collect by WeTransfer. Many detailed explanations can be found on his SwiftLee blog: