SwiftUI最佳实践:View应该具有单例的常量,是否应该在环境中传递它们?

问题描述

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)