Swift 3 - 在TableView中的numberOfRowsInSection之后崩溃

时间:2016-12-15 06:42:48

标签: ios swift swift3 tableview

我今天从2.3迁移到Swift 3.0并修复了所有编译器错误消息,但是我遇到了一个TableView的问题。在我调用reloadData()之后,我在所有数据源方法之后放了一个断点,它进入numberOfSections但在它离开numberOfRowsInSection后崩溃了。 cellForRowAt永远不会被击中。它在AppDelegate崩溃了,所以我不确定那是什么。

我在运行Swift 2.3时之前没有遇到此问题,除非自动转换为3.0对此特定TableView执行了某些操作。我的其他TableView功能正常。

Code

Crash

3 个答案:

答案 0 :(得分:1)

使用以下代码

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        //if self.podcasts.count is nil then 0 will be returned. 
       if let count = self.podcasts.count{ 
             return count
       }
    return 0
}

如果您正在异步地将某些内容加载到播客中并同时重新加载tableview,那么播客可能会为nil并导致崩溃。

答案 1 :(得分:0)

当您的数组为空或具有nil值时,会发生此错误。尝试通过检查数组列表中包含的计数来加载行。

请按照以下代码避免此错误: -

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    //Check array count here and return number of rows as same as array count otherwise return 0 rows 
   if self.podcasts.count > 0 { 
         return self.podcasts.count
   }
   else { 
         return 0
   }

请始终按照此步骤避免此类崩溃。快乐编码!!

答案 2 :(得分:0)

尝试此操作,因为只有对象获得nil才会自动管理计数 一些如何
return self.podcasts != nil ? self.podcasts!.count : 0