var cellHeights: [CGFloat] = [CGFloat]()
if let height = self.cellHeights[index] as? CGFloat {
self.cellHeights[index] = cell.frame.size.height
} else {
self.cellHeights.append(cell.frame.size.height)
}
我需要检查指定索引处的元素是否存在。但是上面的代码不起作用,我得到构建错误:
我也尝试过:
if let height = self.cellHeights[index] {}
但这也失败了:
Bound value in a conditional binding must be of Optional type
有什么想法怎么了?
最佳答案
cellHeights
是一个包含非可选CGFloat
的数组。因此,它的任何元素都不能为nil,因为如果存在索引,则该索引上的元素是CGFloat
。
您试图做的事情只有在创建一个可选数组数组时才可能实现:
var cellHeights: [CGFloat?] = [CGFloat?]()
在这种情况下,可选绑定(bind)应按以下方式使用:
if let height = cellHeights[index] {
cellHeights[index] = cell.frame.size.height
} else {
cellHeights.append(cell.frame.size.height)
}
我建议您再次阅读有关Optionals的信息