我真的很想在我的Swift代码中使用一个更简单的经典try catch块,但是我找不到能做到这一点的任何东西。
我只需要:
try {
// some code that causes a crash.
}
catch {
// okay well that crashed, so lets ignore this block and move on.
}
这是我的难题,当TableView重新加载新数据时,某些信息仍位于RAM中,该信息会调用didEndDisplayingCell具有新的空数据源的tableView崩溃。
所以我经常抛出异常 Index out of range
我已经试过了:
func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
do {
let imageMessageBody = msgSections[indexPath.section].msg[indexPath.row] as? ImageMessageBody
let cell = tableView.dequeueReusableCellWithIdentifier("ImageUploadCell", forIndexPath: indexPath) as! ImageCell
cell.willEndDisplayingCell()
} catch {
print("Swift try catch is confusing...")
}
}
我也尝试过这个:
func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
print(indexPath.section)
print(indexPath.row)
if msgSections.count != 0 {
if let msg = msgSections[indexPath.section].msg[indexPath.row] as? ImageMessageBody {
let cell = tableView.dequeueReusableCellWithIdentifier("ImageUploadCell", forIndexPath: indexPath) as! ImageCell
cell.willEndDisplayingCell()
}
}
}
这是一个优先级很低的代码块,我花了很多时间进行反复试验,弄清楚swift内置的哪种错误处理程序适用于在我有成千上万种类似情况的情况下极其独特的情况。代码可能会崩溃,并且不会对用户体验产生任何影响。
简而言之,我不需要任何花哨的东西,但是Swift似乎有非常具体的错误处理程序,这些错误处理程序根据我是从函数返回值中获取值还是从数组索引中获取不存在的值而有所不同。
是否像其他流行编程语言一样,可以在Swift上进行简单尝试?
慕侠2389804
翻过高山走不出你