Skip to Content

Core Data

1. Model Setup

Tạo .xcdatamodeld file trong Xcode và define entities.

2. NSManagedObject

@objc(Todo) class Todo: NSManagedObject { @NSManaged var title: String @NSManaged var isComplete: Bool @NSManaged var createdAt: Date }

3. Container

struct PersistenceController { static let shared = PersistenceController() let container: NSPersistentContainer init() { container = NSPersistentContainer(name: "Model") container.loadPersistentStores { _, error in if let error = error { fatalError("Core Data failed: \(error)") } } } } @main struct MyApp: App { let persistence = PersistenceController.shared var body: some Scene { WindowGroup { ContentView() .environment(\.managedObjectContext, persistence.container.viewContext) } } }

4. @FetchRequest

struct TodoList: View { @FetchRequest( sortDescriptors: [SortDescriptor(\.createdAt, order: .reverse)], predicate: NSPredicate(format: "isComplete == false") ) var todos: FetchedResults<Todo> var body: some View { List(todos) { todo in Text(todo.title) } } }

5. CRUD Operations

@Environment(\.managedObjectContext) var context func create() { let todo = Todo(context: context) todo.title = "New Task" todo.createdAt = Date() try? context.save() } func delete(_ todo: Todo) { context.delete(todo) try? context.save() }

📝 Recommend

  • Dự án mới: Dùng SwiftData (iOS 17+)
  • Legacy/Complex: Core Data vẫn mạnh mẽ
Last updated on