排序
插入数据
在SwiftData 中插入数据非常简单,默认情况下数据会自动保存,无需手动调用保存操作。以下示例演示了如何创建一个 Student 模型并插入一条记录,数据将自动保存: @Model class Student { var n...
如何动态更改查询的排序顺序或谓词
要实现动态排序,您需要将@Query属性移至 SwiftUI 层次结构中的视图中 - 您需要将其放入子视图中,在其中可以使用依赖项注入提供排序值。 这意味着创建一个新的 SwiftUI,它使用@Query来显示您...
模型配置
ModelConfiguration 是SwiftData 中用于确定数据存储方式和位置的组件。它指定了使用哪个 CloudKit 容器(如果有的话),以及是否启用保存功能。这些配置提供给模型容器,以决定其行为。通过合...
级联关系删除
SwiftData 默认的关系删除规则是.nullify,这意味着如果一个 School 对象与多个 Student对象关联,删除 School 后,学生对象仍会保留在数据存储中。在某些情况下这是合理的,但你也可以使用.cas...
SwiftData 何时保存数据
SwiftData 会立即自动有效地保存所有更改,它是如此之快,以至于任何数据丢失的可能性实际上为零。具体的保存场景: 每次应用程序进入后台 每次应用程序回到前台 每次当前 runloop 结束时
关系最大最小约束
SwiftData 的 @Relationship 宏允许我们指定一对多或多对多连接中应存在的最小和最大对象数量。 超出这些限制时,SwiftData 的自动保存将静默失败,可能导致数据丢失,除非及时进行纠正。 例如...
更新数据
在 SwiftData 中更新数据非常简单,默认情况会自动保存,无需手动调用保存操作。以下示例演示了创建一个 Student模型,并获取模型的数据进行更新,数据将自动保存: @Model class Student { var...
模型上下文
ModelContext 是 SwiftData 中负责跟踪所有在内存中创建、修改和删除的对象的组件。它确保这些对象能够在稍后某个时刻保存到模型容器中。ModelContext 提供了一个便捷的方式来管理对象的状态,...
查询数据
SwiftData 提供了 @Query 宏,用于从 SwiftUI 视图中查询模型对象,并可选择提供排序顺序、过滤谓词,以及用于平滑处理结果变化的自定义动画或自定义事务。更棒的是,@Query 会在每次数据变化时...
删除数据
删除 SwiftData 对象需要两个步骤:首先在你的模型上下文上调用 delete()方法,并传入你想要删除的对象;然后保存更改,可以通过显式调用 save(),或者如果启用了自动保存,则等待自动保存触发...