【发布时间】:2022-01-16 12:25:02
【问题描述】:
我正在我的项目中实现 CoreData/Cloudkit。它使用 MVVM 架构在 SwiftUI 中构建。在 Apple 提供的 Xcode 模板中,我被困在我正在向 CoreData 保存/添加内容的部分,这是在 ContentView 文件中完成的,但对我来说,这感觉就像应该在 ViewModel 中完成的事情。对吗?
另外,我的项目是一个简单的游戏,分数是在 viewModel 中计算的。然后分数会立即通过 ContentView 显示给用户。我还希望能够将分数保存到 Leaderboard CoreData 对象。由于对分数完成的大部分工作都是在 viewModel 中完成的,因此对我来说最有意义的是保存在那里而不是在视图中处理。
模板通过以下代码进行保存
let newItem = Item(context: viewContext)
newItem.timestamp = Date()
do {
try viewContext.save()
其中viewContext 是@Environment(\.managedObjectContext) private var viewContext
我将如何在 ViewModel 中执行此操作,因为我相信 @Enviroment 适用于 SwiftUI。
【问题讨论】:
-
这很可能是正确的,但这是一个非常模糊的问题。
-
@JoakimDanielson 我试图详细说明并添加更多细节。请让我知道这是否有帮助,或者我还有什么需要补充的。
-
Here 是一种方法。不完全是您要查找的内容,但您可以看到视图模型将引用的 Manger 设置
-
在这种情况下,我不会将 MVVM 概念走得太远。保存确实是
PersistanceController的功能。否则,当您最终获得更多视图模型时,您只是在复制代码。
标签: swift core-data swiftui cloudkit