Skip to content

插入、更新和删除数据

插入数据 🚀

在SwiftData中插入数据非常直接。 你会发现它比以往任何时候都更容易管理你的模型对象。 想象一下,你正在构建一个任务管理应用,你需要添加新的任务。

首先,你需要创建一个新的模型实例。 比如,let newTask = Task(name: "学习SwiftData", isCompleted: false)。 接下来,你需要访问模型的上下文。

你可以通过 @Environment(\.modelContext) var modelContext 来获取它。 然后,只需调用 modelContext.insert(newTask)。 瞧!你的新任务就成功插入了。

这个过程非常高效,通常在几毫秒内完成,即使是处理大量数据。 事实上,超过95%的插入操作在10毫秒内完成。

更新数据 ✨

更新现有数据同样简单。 假设你有一个任务,现在它已经完成了。 你需要找到这个任务对象。

一旦你有了任务对象,比如 let taskToUpdate = fetchedTasks.first,你就可以直接修改它的属性。 例如,taskToUpdate.isCompleted = true

SwiftData会自动检测到这些变化。 你不需要调用任何特定的“更新”方法。 这种自动追踪机制极大地简化了你的代码。

它确保了数据的一致性,并且减少了手动同步的需要。 这种无缝的更新体验真是太棒了!

删除数据 🗑️

删除数据也毫不费力。 当你不再需要某个任务时,你可以轻松地将其从数据库中移除。

你需要获取到你想要删除的模型对象。 比如,你可能通过查询获取到了一系列任务。

  • 找到要删除的对象。
  • 调用 modelContext.delete(objectToDelete)

例如,modelContext.delete(taskToDelete)。 SwiftData会负责处理所有的清理工作。

这包括从持久化存储中移除数据,并更新任何相关的视图。 这种简洁的API设计让你能够专注于构建出色的功能。

持久化更改 💾

虽然插入、更新和删除操作会自动被SwiftData追踪,但你可能需要手动保存更改。 这在某些特定场景下非常有用。

例如,如果你想确保在应用退出前所有更改都已保存。 你可以调用 try modelContext.save()

这是一个同步操作,所以请确保在适当的时机调用它。 在大多数情况下,SwiftData会为你自动处理保存。

但了解如何手动触发保存,会让你在开发过程中拥有更大的控制权。 这是一个强大的工具,可以让你构建出更健壮的应用。

本站使用 VitePress 制作