实例方法 'widgetPerformUpdate(completionHandler:)' 几乎符合可选要求 'widgetPerformUpdate(completionHandler:)'
Instance method 'widgetPerformUpdate(completionHandler:)' nearly matches optional requirement 'widgetPerformUpdate(completionHandler:)'
我是今天扩展的新手,我收到了这个警告,有人知道如何匹配可选要求吗?
Instance method 'widgetPerformUpdate(completionHandler:)' nearly matches optional requirement 'widgetPerformUpdate(completionHandler:)' of protocol '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)
}
参数类型前写@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)
}
此函数基本上采用闭包参数作为完成处理程序。函数returns开始运行后,闭包直到运行完成才被调用——闭包需要逃逸,稍后调用。
我是今天扩展的新手,我收到了这个警告,有人知道如何匹配可选要求吗?
Instance method 'widgetPerformUpdate(completionHandler:)' nearly matches optional requirement 'widgetPerformUpdate(completionHandler:)' of protocol '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)
}
参数类型前写@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)
}
此函数基本上采用闭包参数作为完成处理程序。函数returns开始运行后,闭包直到运行完成才被调用——闭包需要逃逸,稍后调用。