通常这对我来说很好,但由于某种原因我现在收到错误“无法将类型'CGFloat'的值赋给'Int'类型的值”。我只是试图获取随机生成的整数并将其转换为CGFloat。但是,代码UInt32(self.view!.frame.width - dotRadius * 2)
似乎正在生成错误。这是代码:
x = CGFloat(arc4random_uniform(UInt32(self.view!.frame.width - dotRadius * 2))) + dotRadius
这是我声明dotRadius变量的地方:
var dotRadius: CGFloat = 0
任何人都知道为什么我不允许转换它?任何帮助表示赞赏。谢谢!
答案 0 :(得分:3)
CGFloat(...)
部分没事;错误消息并不是说你不能明确地将整数转换为一个CGFloat,而是你不能隐式地将从 CGFloat转换为Int。更具体地说,我认为它因为最终作业x = ...
而抱怨;右边的部分是CGFloat,我猜测x
是一个Int?
如果是这样,那么你应该能够通过从CGFloat向Int添加一个显式的强制转换来解决这个问题:
x = Int(CGFloat(arc4random_uniform(UInt32(self.view!.frame.width - dotRadius * 2))) + dotRadius)
This Stack Overflow answer建议你在转换为floor
之前还包括一个明确的round
或Int
(来自数学库),以明确你是什么样的四舍五入期望的。