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