如何避免在tableView(_:cellForRowAt)中崩溃?

时间:2018-09-23 12:39:08

标签: ios swift uitableview

在结构中,我在“ tableView(_:cellForRowAt)”部分看到很多崩溃。对于此例外,没有特定的方案。随时随地都可能发生。没有用于分析崩溃的数据。只有我知道“ tableView(_:cellForRowAt)”中有崩溃。

尽管我不知道根本原因,但我想防止这种异常。我可以使用防止NullPointer异常(如果(!null))之类的方法吗?

下面两个不同代码段中的崩溃;

let XXX = Constants.sharedInstance.url+"/service/photo/"+userdas[(indexPath as NSIndexPath).row].id!+"/"+userdas[(indexPath as NSIndexPath).row].photo!+"/2"

self.notificationModel[indexPath.row].userNot.XXX?.XXXImageView = image

1 个答案:

答案 0 :(得分:2)

从代码中可以很明显地看出,您正在进行一些明确的强制拆开操作,这些操作可能导致崩溃。

userdas[(indexPath as NSIndexPath).row].id!

userdas[(indexPath as NSIndexPath).row].photo!

self.notificationModel[indexPath.row].userNot.XXX?.XXXImageView

我猜想在第三种情况下,XXXImageView是隐式解包的UIImageView,也可能是nil

为避免在第一部分中崩溃,您可以使用guard

guard let id = userdas[indexPath.row].id, 
      let photo = userdas[indexPath.row].photo else {
    return 
}
let XXX = Constants.sharedInstance.url+"/service/photo/"+id+"/"+photo+"/2"

我不确定第二部分中的操作,但是您只需要检查解包后的参数是否不是nil