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