实例方法&widgetConperUpdate(completionHandler :)'几乎匹配可选要求&widgetPerformUpdate(completionHandler :)'

时间:2016-10-21 01:25:52

标签: ios swift xcode swift3 today-extension

我在今天的新版推广中,我收到了此警告,是否有人知道如何匹配可选要求?

  

实例方法' widgetPerformUpdate(completionHandler :)'几乎匹配可选要求&widgetPerformUpdate(completionHandler :)'协议' NCWidgetProviding'

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)
}

1 个答案:

答案 0 :(得分:0)

在参数的类型之前写@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)
}

此函数基本上将闭包参数作为完成处理程序。函数在开始操作后返回,但是在操作完成之前不会调用闭包 - 闭包需要转义,稍后再调用。