Core Data
1. Model Setup
Phần tiêu đề “1. Model Setup”Tạo .xcdatamodeld file trong Xcode và define entities.
2. NSManagedObject
Phần tiêu đề “2. NSManagedObject”@objc(Todo)class Todo: NSManagedObject { @NSManaged var title: String @NSManaged var isComplete: Bool @NSManaged var createdAt: Date}3. Container
Phần tiêu đề “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)") } } }}
@mainstruct MyApp: App { let persistence = PersistenceController.shared
var body: some Scene { WindowGroup { ContentView() .environment(\.managedObjectContext, persistence.container.viewContext) } }}4. @FetchRequest
Phần tiêu đề “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
Phần tiêu đề “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
Phần tiêu đề “📝 Recommend”- Dự án mới: Dùng SwiftData (iOS 17+)
- Legacy/Complex: Core Data vẫn mạnh mẽ