我是今天新来的分机,我有这个警告,有人知道如何匹配可选的要求吗?
实例方法“widgetPerformUpdate(completionHandler:)”几乎与协议“ncwidgetproving”的可选要求“widgetPerformUpdate(completionHandler:)”匹配

func widgetPerformUpdate(completionHandler: ((NCUpdateResult) -> Void)) {
    // Perform any setup necessary in order to update the view.
    // If an error is encountered, use NCUpdateResult.Failed
    // If there's no update required, use NCUpdateResult.NoData
    // If there's an update, use NCUpdateResult.NewData

    let result = performFetch()
    if result == .newData{
        tableView.reloadData()
        self.preferredContentSize = tableView.contentSize
    }
    completionHandler(result)
}

最佳答案

在参数类型之前写入@escaping,以指示允许转义闭包。

func widgetPerformUpdate(completionHandler: (@escaping(NCUpdateResult) -> Void)) {
    // Perform any setup necessary in order to update the view.
    // If an error is encountered, use NCUpdateResult.Failed
    // If there's no update required, use NCUpdateResult.NoData
    // If there's an update, use NCUpdateResult.NewData

    let result = performFetch()
    if result == .newData{
        tableView.reloadData()
        self.preferredContentSize = tableView.contentSize
    }
    completionHandler(result)
}

此函数基本上采用闭包参数作为完成处理程序。函数在启动操作后返回,但在操作完成之前不会调用闭包闭包需要转义,以便稍后调用。

关于ios - 实例方法“widgetPerformUpdate(completionHandler :)”几乎与可选要求“widgetPerformUpdate(completionHandler :)”匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40166939/

10-09 20:35