Swiftui: MacOS App: Fetching Core Data in ContentView OK,但是如何使用 AppDelegate 的结果呢?

Posted

技术标签:

【中文标题】Swiftui: MacOS App: Fetching Core Data in ContentView OK,但是如何使用 AppDelegate 的结果呢?【英文标题】:Swifui: MacOS App: Fetching Core Data in ContentView OK, but how to use the result from AppDelegate? 【发布时间】:2020-08-24 14:11:19 【问题描述】:

对于 MacOS 应用程序,使用 Xcode 11.6 (11E708)、SwiftUI,我在 ContentView.swift 中生成了数据。但我不能在AppDelegate.swift 中使用这些数据:

构建成功,但print(contentView.order.item)(请参见下文)产生此消息:

线程 1:致命错误:未找到 Order 类型的 ObservableObject。一种 订单的 View.environmentObject(_:) 作为 这个观点。

我错过了什么?

在 ContentView.swift 中:

import SwiftUI
public class Order: ObservableObject 
    @Published var item = "Hello"

...
@EnvironmentObject var order: Order
...

在 AppDelegate.swift 中:

func applicationDidFinishLaunching(_ aNotification: Notification) 
    ... 
    let contentView = ContentView()
    print(contentView.order.item)
    ...

【问题讨论】:

【参考方案1】:

如果将Order用作@EnvironmentObject,则需要将Order注入环境:

let order = Order() // declare it once
let contentView = ContentView().environmentObject(order) // inject to the environment

【讨论】:

以上是关于Swiftui: MacOS App: Fetching Core Data in ContentView OK,但是如何使用 AppDelegate 的结果呢?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 macOS SwiftUI App 中的“新窗口”选项?

SwiftUI MacOS App AVPlayer 不适用于视频 URL

Swiftui: MacOS App: Fetching Core Data in ContentView OK,但是如何使用 AppDelegate 的结果呢?

macOS Document App SwiftUI 项目上的 NSPersistentDocument FetchRequest 扭曲属性崩溃

带有“App”协议深度链接的 SwiftUI macOS 应用程序打开了新的应用程序实例

SwiftUI:响应 macOS 上的应用程序终止