SwiftData
1. Model
Phần tiêu đề “1. Model”import SwiftData
@Modelclass Todo { var title: String var isComplete: Bool var createdAt: Date
init(title: String) { self.title = title self.isComplete = false self.createdAt = Date() }}2. Container Setup
Phần tiêu đề “2. Container Setup”@mainstruct MyApp: App { var body: some Scene { WindowGroup { ContentView() } .modelContainer(for: [Todo.self]) }}3. Query Data
Phần tiêu đề “3. Query Data”struct TodoList: View { @Query var todos: [Todo]
var body: some View { List(todos) { todo in Text(todo.title) } }}
// With sort@Query(sort: \Todo.createdAt, order: .reverse)var todos: [Todo]
// With filter@Query(filter: #Predicate<Todo> { !$0.isComplete })var incompleteTodos: [Todo]4. Insert/Delete
Phần tiêu đề “4. Insert/Delete”struct TodoList: View { @Environment(\.modelContext) var context @Query var todos: [Todo]
func addTodo() { let todo = Todo(title: "New Task") context.insert(todo) }
func deleteTodo(_ todo: Todo) { context.delete(todo) }}5. Relationships
Phần tiêu đề “5. Relationships”@Modelclass Category { var name: String @Relationship(deleteRule: .cascade) var todos: [Todo] = []}
@Modelclass Todo { var title: String var category: Category?}📝 So với Core Data
Phần tiêu đề “📝 So với Core Data”| SwiftData | Core Data |
|---|---|
| Swift-native | Objective-C origin |
| Macro-based | Model editor |
| Simpler API | More features |
| iOS 17+ | iOS 3+ |