如何在小部件和应用程序之间共享 SwiftData @Model?

Ser*_*gio 5 core-data ios swift widgetkit swift-data

我的应用程序及其小部件之间共享一个应用程序组。

我有 SwiftData 的 @Model,从小部件意图的perform()方法更新并显示在应用程序和小部件上。

@MainActor
func perform() async throws -> some IntentResult {
    let context = try ModelContainer(for: MyModel.self).mainContext
    let myModel = try ModelContainer(for: MyModel.self).mainContext.fetch(
        FetchDescriptor<MyModel>(predicate: #Predicate {
            // The predicate is not the problem.
        })
    ).first

    myModel?.functionThatModifiesMyModel()

    return .result()
}
Run Code Online (Sandbox Code Playgroud)

应用程序和小部件 SwiftUI 都使用宏查看对模型的访问。

@Environment(\.modelContext) var context
@Query(sort: \.whatever) var myModel: [MyModel]
Run Code Online (Sandbox Code Playgroud)

但应用程序代码中的数据永远不正确(使用意图正确更新小部件的数据)。

为什么模型没有出现在应用程序中?

iAu*_*gus -2

应该为主要目标和小部件目标而不是应用程序组启用iCloudCloudKit及其)Containers