重新加载UITableView显示错误?

我处于一个奇怪的境地。 当我尝试重新加载tableview使用reloadData()它显示以下错误。 。 。

致命错误:意外地发现零,而解包一个可选值

这是检索输出的Web服务方法

 func didRecieveOutput(results:NSArray) { if results.count != 0 { userOrders = results as! NSMutableArray dispatch_async(dispatch_get_main_queue(), { () -> Void in self.orderList.reloadData() }) } } 

编辑:我已经检查了我的连接以及委托和数据源。 它适用于静态数据。 但是当我调用reloadData()时,问题就来了。 我有静态数据以及dynamic(服务器数据)相同的问题。

这个错误可能有n个原因。 一些常见原因是:

  1. 您的UITableView @IBOutlet未正确连接。
  2. 缺less代表/数据源也可能是一个原因。
  3. 将数据提供给表视图的模型正在reloadData()调用之前进行修改。
  4. 在使用某些对象之前,您没有正确地检查nil
  5. 发布服务器响应后,您正在创build一个新的实例,而不是使用已经加载的实例。
  6. 另一个原因可能是如果你的视图结构是这样的:UITableViewController —> UIView —> UITableView,然后'tableView'去零,你需要调用[[self.view.subviews objectAtIndex:0] reloadData]; 。 参考: 苹果论坛 。

你可以尝试以上的情况,但是对于我们来说,指出你需要共享你的表视图渲染代码和stream的错误。

解决scheme发现! 🙂

感谢Abhinav给我的线程,尽pipe他的build议失败了。

 var array : NSArray = self.view.subviews array.objectAtIndex(0).reloadData() 

我也得到了同样的错误。 所以我尝试了这个工作

 var array : NSArray = self.view.subviews array.objectAtIndex(2).reloadData() 

在这个数组中,我的tableview是在第二个索引。 所以我的build议是检查数组,首先确定tableview对象,并使用索引。