CGFloat 没有转换为 UInt32?
CGFloat not converting to UInt32?
通常这对我来说工作正常,但出于某种原因我现在收到错误 "Cannot assign a value of type 'CGFloat' to a value of type '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
有人知道为什么我不能转换吗?任何帮助表示赞赏。谢谢!
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 建议您在转换为 Int
之前还包含一个明确的 floor
或 round
(来自数学库),以明确哪种类型四舍五入。
通常这对我来说工作正常,但出于某种原因我现在收到错误 "Cannot assign a value of type 'CGFloat' to a value of type '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
有人知道为什么我不能转换吗?任何帮助表示赞赏。谢谢!
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 建议您在转换为 Int
之前还包含一个明确的 floor
或 round
(来自数学库),以明确哪种类型四舍五入。