我制作了一个使用单例 DataController 的应用程序,它通过 EnvironmentObject 在 SwiftUI 视图中传递。该单例负责在后台处理 CoreData。
如何访问AppIntent中的dataController实例?非常感谢!
我尝试过以下代码:
import AppIntents
import SwiftUI
struct AddSentence: AppIntent {
@EnvironmentObject var dataController: DataController
static var title: LocalizedStringResource = "Add new sentence"
func perform() async throws -> some IntentResult {
dataController.newSentence()
return .result()
}
}
但是我收到一个致命错误:
Thread 1: Fatal error: No ObservableObject of type DataController found. A View.environmentObject(_:) for DataController may be missing as an ancestor of this view.
我相信 @EnvironmentObject 仅适用于 SwiftUI View。
可以正常通过
struct AddSentence: AppIntent { var dataController = DataController.shared // 使用单例实例
static var title: LocalizedStringResource = "Add new sentence"
func perform() async throws -> some IntentResult {
dataController.newSentence()
return .result()
}
}
因为
DataController
是单例,你甚至可以不传它,而是在AddSentence中发起它而不传