错误:Double无法转换为UInt8(在最后一行代码中)
var beweegsnelheid = NSTimeInterval()
var random3 = CGFloat(arc4random_uniform(100))
var beweegsnelheidmax = beweegsnelheid * 1.2
var beweegsnelheidmin = beweegsnelheid * 0.8
beweegsnelheid = NSTimeInterval(beweegsnelheidmin + (random3/100 * (beweegsnelheidmax - beweegsnelheidmin)))
我做错了什么?
答案 0 :(得分:1)
你试图将CGFloat乘以Double(CGFloat是Float的typedef)。
random3/100 * (beweegsnelheidmax - beweegsnelheidmin)
不幸的是,Swift目前需要在整个地方进行显式类型转换。
var beweegsnelheid = NSTimeInterval()
var random3 = Float(arc4random_uniform(100))
var beweegsnelheidmax = Float(beweegsnelheid * 1.2)
var beweegsnelheidmin = Float(beweegsnelheid * 0.8)
beweegsnelheid = NSTimeInterval(beweegsnelheidmin + (random3/100 * (beweegsnelheidmax - beweegsnelheidmin)))
请确保您始终使用Float或Double,并且您不应该遇到问题。
答案 1 :(得分:0)
如果它抱怨CGFloat不能转换为Double会更加明显。 Swift编译器错误有时非常糟糕。
除random3之外,您的所有值均为Double。将它设为Double也可以使用。
let random3 = Double(arc4random_uniform(100))