重新加载UITableView显示错误?

时间:2015-09-21 11:35:55

标签: ios swift nsarray tableview tableviewcell

我处境很奇怪。当我尝试使用func didRecieveOutput(results:NSArray) { if results.count != 0 { userOrders = results as! NSMutableArray dispatch_async(dispatch_get_main_queue(), { () -> Void in self.orderList.reloadData() }) } } 重新加载tableview时,它显示以下错误。 。

  

致命错误:在解包可选值时意外发现nil

以下是检索输出的Web服务方法

Connection conn = null;        
Statement stmt = null; // Or PreparedStatement if needed        
ResultSet rs = null;

try
{
    conn = ... get connection from connection pool ...            
    stmt = conn.createStatement ("select ...");         
    rs = stmt.executeQuery();

    ... iterate through the result set ...

}
catch (SQLException e)
{
    // ... deal with errors ...
}
finally
{
    CloseTheConnection(conn);        
    CloseTheStatement(stmt);         
}

public void closeTheConnection(Connection conn){             
try{
    if(conn!=null){            
     conn.close();             
  }             
}catch(Exception ex){            
}

public void closeTheStatement(Statement stmt){             
try{            
 if( stmt != null)            
      stmt.close();            
  } catch(Exception ex){                
  }
}

编辑:我已经检查了我的连接以及委托&数据源 。它适用于静态数据。但是当我调用reloadData()时出现了问题。我对静态数据和动态(来自服务器的数据)也有同样的问题。

2 个答案:

答案 0 :(得分:1)

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

  1. @IBOutlet的{​​{1}}未正确连接。
  2. 缺少代表/数据源也可能是一个原因。
  3. UITableView调用之前,正在修改将数据提供给表视图的模型。
  4. 在使用某些对象之前,您没有正确检查reloadData()
  5. 发布获取服务器响应后,您正在创建一个新实例,而不是使用已加载的实例。
  6. 另一个原因可能是你的视图结构是这样的:UITableViewController ---> UIView ---> UITableView,然后'tableView'为零,你需要调出nil。参考:Apple Discussion Forum
  7. 您可以尝试以上情况,但我们可以指出您需要共享表格视图呈现代码和流程所需的错误。

答案 1 :(得分:0)

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

感谢Abhinav给我提供线索,即使他的建议失败了。

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

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

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

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