无法用索引“ CGFloat”下标“ [UIImage]”类型的值

时间:2019-02-13 00:58:10

标签: swift xcode

我有这个错误。

无法为索引类型为“ CGFloat”的“ [UIImage]”下标

为什么会这样?

func scrollViewDidScroll(_ scrollView: UIScrollView) {

    if(scrollView.contentOffset.y > self.view.frame.height) {
        //(1/10) because we are changing the scrollView every 1/10 of the screen
        let pictureCount = scrollView.contentOffset.y/scrollView.frame.height*(1/10)
        imageView.image = images[pictureCount]
    }

}

1 个答案:

答案 0 :(得分:1)

不能使用CGFloat在Swift中为数组建立索引,您可以通过简单地强制转换为Int来修复它。

let priceCount : CGFloat = 3 /* just for testing purposes */
let images = [UIImage]()
let imageView = UIImageView()

imageView.image = images[Int(priceCount)]

此演员表由@prekshya basnet在评论中指出。


数组仅具有Int个位置,例如:

array[0]array[1]array[2]

如果CGFloats可以为数组建立索引,则会产生歧义,因为类似array[0.5]这样的东西可能是访问选项

注意:从CGFloatInt的转换只会删除十进制值而不四舍五入,这意味着如果您拥有{{1 }}或Int(CGFloat(0.1)),将始终产生Int(CGFloat(0.9))