Bỏ qua để đến nội dung

SwiftData

import SwiftData
@Model
class Todo {
var title: String
var isComplete: Bool
var createdAt: Date
init(title: String) {
self.title = title
self.isComplete = false
self.createdAt = Date()
}
}
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: [Todo.self])
}
}
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]
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)
}
}
@Model
class Category {
var name: String
@Relationship(deleteRule: .cascade)
var todos: [Todo] = []
}
@Model
class Todo {
var title: String
var category: Category?
}

SwiftData Core Data
Swift-native Objective-C origin
Macro-based Model editor
Simpler API More features
iOS 17+ iOS 3+