翻译自官网 developer.apple.com/xcode/swift…
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 一起运用。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

