NSRect参数的类型转换

时间:2015-06-01 13:13:34

标签: swift implicit-conversion

我做错了什么,或者Swift应该用不断的转换来写?例如,我想定义一个NSRect来绘制一个圆,我已经定义了一个NSPoint,它将是它的中心,我的半径也是Float类型,它将定义宽度和高度,但之前应该乘以Int比例,所以我这样做:

let objectRect = NSRect(x: center.x - radius*scale ...

我收到警告,我无法将Int乘以Float。好的,现在看起来像这样:

let objectRect = NSRect(x: center.x - radius*Float(scale) ...

现在这部分很好,但另一个警告说Float无法从CGFloat中删除。另一种转换:

let objectRect = NSRect(x: Float(center.x) - radius*Float(scale) ...

看起来很糟糕,但最后警告最后警告声明NSRect不接受Float,所以我需要将它转换为Double。

1 个答案:

答案 0 :(得分:1)

只做一次。如下面评论的那样立即使用CGFloat

let objectRect = NSRect(x: CGFloat(center.x) - radius* CGFloat(scale) ...

来自脚本语言的Swift类型系统可能很烦人。但是,你已经习惯了。