如何在 Observable Store 中访问相同的 SwiftData 模型容器

How to access same SwiftData Model Container inside Observable Store

提问人:shoji 提问时间:8/12/2023 最后编辑:shoji 更新时间:10/6/2023 访问量:665

问:

我正在尝试访问我提供给场景的 Observable 类中的相同模型容器

var body: some Scene {
    WindowGroup {
        ContentView()
    }.modelContainer(for: [Product.self]

我可以在视图中访问此模型,如下所示

var products: [Product]
@Query(sort: \Product.name)

 @Environment(\.modelContext) private var modelContext

但是我怎样才能在里面访问相同的模型

@Observable public class ProductStore{
//how to access same model context  OR
//@Query model inside this class throughs same container

}

在核心数据中

class PersistentStore: ObservableObject {
var context: NSManagedObjectContext { persistentContainer.viewContext }

我想知道我怎样才能在课堂上做到这一点@Observable

@Observable public class ProductStore{ // 获取与 App 首次启动时声明的相同上下文 }

iOS17 -数据 SWIFT -宏

评论

1赞 Joakim Danielson 8/12/2023
依赖注入,您可以将模型容器或上下文传递给可观察类型的 init,或者在每个函数调用中从视图传递模型上下文。
0赞 shoji 8/13/2023
每个函数调用是什么意思?为什么不在 swiftUI init 中一次
0赞 Joakim Danielson 8/13/2023
这取决于什么最适合你,我不知道你的代码,所以这只是一个例子。无论如何,这与将 Core Data 与 SwiftUI 和 StateObject 一起使用并没有太大区别,因此您也可以寻找执行此操作的示例
0赞 quaternionboy 8/15/2023
@JoakimDanielson 实例化内部对象并在应用环境中设置它怎么样 ?!?!ModelContainer@ObservableProductStore.modelContainer(productStore.container)
0赞 shoji 8/15/2023
我注意到 CRUDT 操作时多个 ModelContainer 导致问题。

答: 暂无答案