然后在 Promisekit 中重新加载 tableview

Posted

技术标签:

【中文标题】然后在 Promisekit 中重新加载 tableview【英文标题】:Reloading tableview in Promisekit's then 【发布时间】: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 的最佳做法是什么。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

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

以上是关于然后在 Promisekit 中重新加载 tableview的主要内容,如果未能解决你的问题,请参考以下文章

While Loop 在 Promisekit 完成运行并在 Swift 中返回正确的值之前递增并重新运行

重新定义外部块(promiseKit)

jQuery DataTable 删除数据后重新加载

在 WKInterface Table + Objective c 中重新加载数据

如何在 Swift 中使用 PromiseKit 和 Firebase?

PromiseKit 手动安装