如何在应用程序意图中访问单例数据控制器?

问题描述 投票:0回答:1

我制作了一个使用单例 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.
swift xcode swiftui sirikit appintents
1个回答
0
投票

我相信 @EnvironmentObject 仅适用于 SwiftUI View。

  1. 可以正常通过

    struct AddSentence: AppIntent { var dataController = DataController.shared // 使用单例实例

     static var title: LocalizedStringResource = "Add new sentence"
    
     func perform() async throws -> some IntentResult {
         dataController.newSentence()
    
         return .result()
     }
    

    }

  2. 因为

    DataController
    是单例,你甚至可以不传它,而是在AddSentence中发起它而不传

© www.soinside.com 2019 - 2024. All rights reserved.