繁体   English   中英

Swift 中的错误“传递给‘NSManagedObjectContext’类型参数的尾随闭包不接受闭包”

[英]Error "Trailing closure passed to parameter of type 'NSManagedObjectContext' that does not accept a closure" in Swift

我尝试在 Swift 中向我的应用程序添加实时活动。但是当我尝试运行该应用程序时,出现错误消息“尾随闭包传递给不接受闭包的‘NSManagedObjectContext’类型的参数”。 我的应用程序使用核心数据来保存我的应用程序的数据。

class HabitManager: ObservableObject {
    private var activity: Activity<HabitsWidgetAttributes>? = nil

    func startHabit(name: String, symbol: String, currentTask: String) {
        let attributes = HabitsWidgetAttributes(name: name, symbol: symbol)
        let state = HabitsWidgetAttributes.ContentState(currentTask: currentTask)
    
        activity = try? Activity<HabitsWidgetAttributes>.request(attributes: attributes, contentState: state)
    }

    func updateActivity(nextTask: String) {
        let state = HabitsWidgetAttributes.ContentState(currentTask: nextTask)
    
        Task { // Line where the error is generated
            await activity?.update(using: state)
        }
    }

    func stopActivity() {
        let state = HabitsWidgetAttributes.ContentState(currentTask: "Finished")
    
        Task { // Line where the error is generated
            await activity?.end(using: state, dismissalPolicy: .immediate)
        }
    }
}

如果您创建一个名为 Task 的 CoreData 实体,那么编译器将尝试使用它而不是 Swift Task结构。

您可以将您的 CoreData 实体重命名为其他名称(我推荐),或者您可以通过在其前面加上模块来调用异步任务,在这种情况下它看起来像这样:

Swift.Task {
  // do stuff
}

由于您必须在任何地方都这样做,我强烈建议您改为重命名您的实体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM