我正试图在Swift中将图像切成9块。我收到了这个错误:
'CGFloat'无法转换为'Double'
当我将i
或j
放入两个变量时,我收到此错误。
以下是用于剪切图像的代码的一部分。
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"
有什么问题?
答案 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(自动转换)中的非启动项。我们可以将 CGFloat
和 Double
交替传递给接受这两种类型之一的函数。