What is Core Data in iOS?
Answer
Core Data is Apple's object graph and persistence framework for managing the model layer of an application. It's NOT a database — it's an ORM-like layer that can persist data to SQLite, binary, or in-memory stores. Core Data stack components: (1) NSManagedObjectModel: the schema — defines entities (like tables), attributes (columns), and relationships; (2) NSPersistentStoreCoordinator: bridges the model with the persistent store (SQLite file); (3) NSManagedObjectContext (MOC): the "working area" where objects are fetched, modified, and saved. Tracks changes; (4) NSPersistentContainer (modern): encapsulates the entire stack in one convenient object. Modern setup: lazy var persistentContainer: NSPersistentContainer = { let container = NSPersistentContainer(name: "MyApp") container.loadPersistentStores { _, error in if let error = error { fatalError("Core Data error: \(error)") } } return container }() var context: NSManagedObjectContext { return persistentContainer.viewContext }. CRUD operations: // Create: let user = User(context: context) user.name = "Alice"; user.email = "alice@example.com" try! context.save() // Read: let request = User.fetchRequest() request.predicate = NSPredicate(format: "name == %@", "Alice") request.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)] let results = try! context.fetch(request) // Update: user.name = "Alice Smith"; try! context.save() // Delete: context.delete(user); try! context.save(). SwiftData (iOS 17+): modern replacement with Swift macros: @Model class User { var name: String; var email: String }. NSFetchedResultsController: drives UITableView/UICollectionView automatically from Core Data changes.