我在今天的新版推广中,我收到了此警告,是否有人知道如何匹配可选要求?
实例方法' 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)
}
答案 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)
}
此函数基本上将闭包参数作为完成处理程序。函数在开始操作后返回,但是在操作完成之前不会调用闭包 - 闭包需要转义,稍后再调用。