排序
如何在 SwiftUI 预览中使用 SwiftData
基于模型扩展在模型的基础上进行扩展,这里以 movie 模型为例import Foundation import SwiftData @Model final class Movie { var title: String var year: Int @Relationship(deleteRule: .ca...
SwiftData 调试
SwiftData 在调试时可以直接在输出窗口显示对应的 SQL 语句。 设置方法 点击如下的按钮,弹出 Scheme 窗口 在弹出的Scheme 窗口中,选择 Run菜单,然后选择 Argument 标签页,点击+号按钮。 然...
如何动态更改查询的排序顺序或谓词
要实现动态排序,您需要将@Query属性移至 SwiftUI 层次结构中的视图中 - 您需要将其放入子视图中,在其中可以使用依赖项注入提供排序值。 这意味着创建一个新的 SwiftUI,它使用@Query来显示您...
SwiftData 何时保存数据
SwiftData 会立即自动有效地保存所有更改,它是如此之快,以至于任何数据丢失的可能性实际上为零。具体的保存场景: 每次应用程序进入后台 每次应用程序回到前台 每次当前 runloop 结束时
查询数据
SwiftData 提供了 @Query 宏,用于从 SwiftUI 视图中查询模型对象,并可选择提供排序顺序、过滤谓词,以及用于平滑处理结果变化的自定义动画或自定义事务。更棒的是,@Query 会在每次数据变化时...
删除数据
删除 SwiftData 对象需要两个步骤:首先在你的模型上下文上调用 delete()方法,并传入你想要删除的对象;然后保存更改,可以通过显式调用 save(),或者如果启用了自动保存,则等待自动保存触发...
更新数据
在 SwiftData 中更新数据非常简单,默认情况会自动保存,无需手动调用保存操作。以下示例演示了创建一个 Student模型,并获取模型的数据进行更新,数据将自动保存: @Model class Student { var...
插入数据
在SwiftData 中插入数据非常简单,默认情况下数据会自动保存,无需手动调用保存操作。以下示例演示了如何创建一个 Student 模型并插入一条记录,数据将自动保存: @Model class Student { var n...
模型迁移
当你更改数据模型时,SwiftData 可以自动处理模型更新,也可以通过手动干预进行复杂的迁移。 自动处理更新迁移 以下是一些常见的小修改,SwiftData 会自动处理这些模型更新: 添加一个或多个新...
关系最大最小约束
SwiftData 的 @Relationship 宏允许我们指定一对多或多对多连接中应存在的最小和最大对象数量。 超出这些限制时,SwiftData 的自动保存将静默失败,可能导致数据丢失,除非及时进行纠正。 例如...