@FetchRequest 是 SwiftUI 中用于从 Core Data 数据库中获取数据的属性包装器。它允许你在 SwiftUI 视图中直接声明一个 fetch 请求,以便从 Core Data 实体中检索数据,并将这些数据与视图绑定在一起。当数据库中的数据发生变化时,视图会自动更新以反映这些更改。
使用示例
// 假设你有一个名为 "Item" 的 Core Data 实体,并且它有一个 "name" 属性和一个 "timestamp" 属性
import SwiftUI
import CoreData
struct MyView: View {
// 声明一个 fetch 请求,从 "Item" 实体中获取所有数据,并按 "timestamp" 属性排序
@FetchRequest(
entity: Item.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)
]
) var items: FetchedResults<Item>
var body: some View {
List {
ForEach(items) { item in
Text(item.name ?? "Unknown")
}
}
}
}
在这个例子中,@FetchRequest 属性包装器被用来声明一个 fetch 请求,该请求从 "Item" 实体中获取所有记录,并按照 "timestamp" 属性的升序进行排序。items 变量是一个 FetchedResults<Item> 类型的实例,它包含了 fetch 请求的结果。然后,在视图的 body 中,我们使用 List 和 ForEach 来展示这些结果。