我有一个对象数组,都有一个timeStamp(NSDate),我试图用下面的闭包对它们进行排序。
问题是这样做没有任何优化,所以使用调试版本一切都很好,花花公子。但是在优化的过程中,我得到了以下EXC_BAD_ACCESS。
reportCells.sort({ (a: UITableViewCell, b: UITableViewCell) -> Bool in
if let first = a as? GreenelyTableViewCell,
second = b as? GreenelyTableViewCell {
if let firstDate = first.timeStamp,
secondDate = second.timeStamp {
let comparison = firstDate.compare(secondDate)
if comparison == NSComparisonResult.OrderedAscending {
return false
} else {
return true
}
}
}
return false
})
有任何解决方法吗?
答案 0 :(得分:0)
问题是你正在整理细胞。首先,这不是一个正确的方法。您应该对数据源数组进行排序。因为table正在内存中管理其单元格,并且当您创建单元格数组时。即使看起来有效,它也会在后端引起问题。现在来解决你的问题,
您正在排序单元格,当您返回到tableview列表方法时,它再次从数据源中获取数据,即我的意思是您的对象数组。而tableview没有找到合适的数据安排。我的意思是你的单元格在排序后是1,4,2,3顺序,而你的数据是1,2,3,4顺序。这将导致表视图抛出异常。此外,细胞的可恢复性也会引起问题。 因此,您需要在将数据显示到单元格之前对其进行排序。我打赌你的问题会得到解决。