【问题标题】:Reloading UITableView shows error?重新加载 UITableView 显示错误?
【发布时间】:2015-12-18 02:15:35
【问题描述】:

我的处境很奇怪。当我尝试使用reloadData() 重新加载 tableview 时,它显示以下错误。 . .

致命错误:在展开可选值时意外发现 nil

这是检索输出的 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() 时问题来了。我对静态数据和动态(来自服务器的数据)有同样的问题。

【问题讨论】:

  • 显示此链接以获得更好的帮助:stackoverflow.com/questions/24643522/…
  • 这意味着你在 nil 值上加上了感叹号。请提供一些代码
  • 当你重新加载tableView时,你的数组可能会变成nil。
  • @CuteAngel 实际上我的 tableview 对象显示为零。当我尝试使用静态数据重新加载 tableview 时,也会发生同样的情况。
  • 我可以知道投反对票的原因吗?

标签: ios swift nsarray tableview tableviewcell


【解决方案1】:

此错误可能有多种原因。一些常见的原因是:

  1. 您的@IBOutlet 与您的UITableView 未正确连接。
  2. 缺少委托/数据源也可能是一个原因。
  3. reloadData() 调用之前,您正在修改向表视图提供数据的模型。
  4. 在使用某些对象之前,您没有正确检查 nil
  5. 获取服务器响应后,您正在创建一个新实例,而不是使用已加载的实例。
  6. 另一个原因可能是如果您的视图结构是这样的:UITableViewController ---> UIView ---> UITableView,那么 'tableView' 变为 nil,您需要调用 [[self.view.subviews objectAtIndex:0] reloadData];。参考:Apple Discussion Forum

您可以尝试上述情况,但需要我们指出您需要共享表格视图渲染代码和流程的错误。

【讨论】:

  • 数据分配给字典还是数组都没有关系。如需 SO 社区中任何人的任何进一步帮助,您需要分享您的代码。
【解决方案2】:

找到解决方案!!!! :)

感谢Abhinav 尽管他的建议失败了,但还是给了我这个帖子。

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

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

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

在这个数组中,我的 tableview 位于第二个索引处。所以我的建议是先检查数组来识别tableview对象,然后使用索引。

【讨论】:

    猜你喜欢
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 2011-08-26
    • 1970-01-01
    相关资源
    最近更新 更多