在使用 Core Data 的 SwiftUI 项目的 Xcode 12 模板中,Apple 提供了以下代码:
import SwiftUI
@main
struct CoreDataApp: App {
let persistenceController = PersistenceController.shared
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
}
}
}
在这种情况下,persistenceController 是一个单例。
下面的代码有什么区别,单例是同时初始化和传递的?为什么我们对单例使用常量?
import SwiftUI
@main
struct CoreDataApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, PersistenceController.shared.container.viewContext)
}
}
}
另外,将这个单例提供给环境有什么好处吗?我们不能PersistenceController.shared.container.viewContext
直接在子视图中使用吗?
我问是因为我的应用程序中的服务单例很少,但我不想从主App
视图而是在子视图中初始化它们。