在使用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
而是在子视图中对其进行初始化。