0

在使用 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视图而是在子视图中初始化它们。

4

0 回答 0