"' CGFloat的'不可转换为' Double'" Swift中的错误(iOS)

时间:2014-10-13 08:58:27

标签: ios swift cgfloat

我正试图在Swift中将图像切成9块。我收到了这个错误:

  

'CGFloat'无法转换为'Double'

当我将ij放入两个变量时,我收到此错误。

以下是用于剪切图像的代码的一部分。

for i in 1...3
    {
        for j in 1...3
        {
            var intWidth = ( i * (sizeOfImage.width/3.0))
            var fltHeight = ( j * (sizeOfImage.height/3.0))
        var portion = CGRectMake(intWidth,fltHeight, sizeOfImage.width/3.0, sizeOfImage.height/3.0);
            .
            .
      "Code goes on"

有什么问题?

2 个答案:

答案 0 :(得分:3)

在swift中,没有数值数据类型的隐式转换,而是混合整数和浮点数。 您必须将索引显式转换为CGFloat s:

var intWidth = ( CGFloat(i) * (sizeOfImage.width/3.0))
var fltHeight = ( CGFloat(j) * (sizeOfImage.height/3.0))

正如经常在swift中发生的那样,错误信息具有误导性 - 它说:

  

' CGFloat的'不能转换为' Double'

而我期待:

  

' CGFloat的'不可转换为' Int'

答案 1 :(得分:0)

这是 Swift 5.5(自动转换)中的非启动项。我们可以将 CGFloatDouble 交替传递给接受这两种类型之一的函数。