SwiftData-苹果最先进的数据库
SwiftData 用于在声明式UI开发(SwiftUI)中进行数据持久化。您可以使用 Swift 代码查询和过滤数据了。

创建模型
使用带有@Model的普通 Swift 类型对数据进行建模,无需关心底层文件存储。
SwiftData 自动推断关系(relationships),您可以使用清晰的声明比如@Attribute(.unique)来描述属性约束。
@Model
class Recipe {
@Attribute(.unique) var name: String // 在相同类型的所有模型中属性的值是唯一的。
var summary: String?
var ingredients: [Ingredient]
}
自动持久性
SwiftData 使用Model(模型)构建自定义schema,并将其字段有效地映射到底层存储。
由 SwiftData 管理的对象在需要时从数据库中获取,并在适当的时候自动保存,您无需进行额外的工作。
您还可以使用 ModelContext API 进行完全控制。
与 SwiftUI 集成
在 SwiftUI views中使用@Query来获取数据。SwiftData 和 SwiftUI 协同工作,在基础数据更改时提供视图的实时更新,无需手动刷新。
@Query var recipes: [Recipe] // 获取一组模型并使模型与底层数据保持同步的property wrapper(属性包装器)。
var body: some View {
List(recipes) { recipe in
NavigationLink(recipe.name, destination: RecipeView(recipe))
}
}
Swift-native predicates
无需使用复杂 SQL, 使用表达式(编译器自动类型检查)来查询和筛选数据,以便在开发过程中捕获拼写错误。
当表达式无法映射到基础存储引擎时,谓词会提供编译时错误。
let simpleFood = #Predicate<Recipe> { recipe in
recipe.ingredients.count < 3
}
CloudKit同步
您的数据可以使用DocumentGroup储存在文件中并通过 iCloud Drive 同步到云端,,也可以使用 CloudKit 在设备之间同步数据。
与Core Data兼容
SwiftData 使用经过验证的 Core Data 存储架构,因此您可以在具有相同底层存储的同一App中使用两者。
Xcode 将 Core Data Models转换为类以与 SwiftData 一起使用。
作者:Bowen_J
链接:https://juejin.cn/post/7241562753163870269
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://juejin.cn/post/7241562753163870269
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。