【问题标题】:Reloading tableview in Promisekit's then然后在 Promisekit 中重新加载 tableview
【发布时间】:2015-08-18 06:10:15
【问题描述】:

我正在尝试异步。使用 Promisekit 的承诺请求。我在 UITableViewController 的子类中有以下代码,用于使用从异步获取的数据重新加载 tableview。请求。

my_promise.then { asynly_fetched_data in 
  self.data = asyncly_fetched_data
  self.tableView.reloadData()
} 

但是,以下语句 (self.tableView.reloadData()) 导致以下构建错误。

 Missing return in a closure expected to return 'AnyPromise' 

是因为我们不能在闭包内调用 reloadData() 吗?如果是这种情况,在异步请求完成后重新加载 tableview 的最佳做法是什么。

【问题讨论】:

    标签: ios swift uitableview promisekit


    【解决方案1】:

    这是一个快速的错误。但是您可以通过在闭包中添加 -> Void 来修复它:

    my_promise.then { asynly_fetched_data -> Void in 
      self.data = asyncly_fetched_data
      self.tableView.reloadData()
    } 
    

    这样,Swift 就知道返回的是 Void。

    【讨论】:

    • 谢谢!!那行得通。但是您是如何发现 (-> Void) 解决了这个问题的。
    • 这是一个已知的错误。我以前也遇到过类似的问题。
    • 这不是一个错误 - 这就是多行闭包的工作方式 - 编译器无法从您的代码中推断返回类型并将其与方法定义中的要求进行比较。如果你只留下一行 - 它会正常编译
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多