如何让@FetchRequest获取的值可以全局使用
时间: 2023-11-22 12:53:13 浏览: 24
如果你想在整个应用程序中使用@FetchRequest获取的值,可以将其放置在全局环境中的ObservableObject中,并使用@EnvironmentObject注入到需要使用该数据的任何视图中。
以下是示例代码:
首先,我们创建一个ObservableObject来存储我们的@FetchRequest结果:
```swift
class DataStore: ObservableObject {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(entity: MyEntity.entity(), sortDescriptors: [])
var items: FetchedResults<MyEntity>
// other properties and methods...
}
```
然后,我们将DataStore注入到应用程序的环境中:
```swift
@main
struct MyApp: App {
let dataStore = DataStore()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(dataStore)
}
}
}
```
现在,我们可以在任何需要使用items的视图中访问它:
```swift
struct ContentView: View {
@EnvironmentObject var dataStore: DataStore
var body: some View {
List {
ForEach(dataStore.items) { item in
Text(item.name ?? "")
}
}
}
}
```
这样,我们就可以在整个应用程序中使用@FetchRequest获取的值了。