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)
}
Run Code Online (Sandbox Code Playgroud)
我需要检查指定索引处的元素是否存在.但是上面的代码不起作用,我得到了构建错误:
从CGFloat到CGFloat的条件下转总是成功的
我也尝试过:
if let height = self.cellHeights[index] {}
Run Code Online (Sandbox Code Playgroud)
但这也失败了:
Bound value in a conditional binding must be of Optional type
Run Code Online (Sandbox Code Playgroud)
任何想法都错了吗?
cellHeights是一个包含非可选的数组CGFloat.所以它的任何元素都不能为nil,因此如果索引存在,那个索引上的元素就是a CGFloat.
你想要做的只有在你创建一个可选项数组时才有可能:
var cellHeights: [CGFloat?] = [CGFloat?]()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,可选的绑定应使用如下:
if let height = cellHeights[index] {
cellHeights[index] = cell.frame.size.height
} else {
cellHeights.append(cell.frame.size.height)
}
Run Code Online (Sandbox Code Playgroud)
我建议你再读一下Optionals
| 归档时间: |
|
| 查看次数: |
7661 次 |
| 最近记录: |