简体   繁体   中英

“'CGFloat' is not convertible to 'Double'” error in Swift (iOS)

I'm trying to cut an image into 9 pieces in Swift. I'm getting this error:

'CGFloat' is not convertible to 'Double'

I get this error when I put i or j in the two variables.

Below is part of the code used for cutting the image.

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"

What is the problem?

In swift there is no implicit conversion of numeric data types, and you are mixing integers and floats. You have to explicitly convert the indexes to CGFloat s:

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

As often happening in swift, the error message is misleading - it says:

'CGFloat' is not convertible to 'Double'

whereas I'd expect:

'CGFloat' is not convertible to 'Int'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM