Double不能转换为UInt8,Swift错误

时间:2015-03-20 14:28:45

标签: xcode swift nstimeinterval

错误: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)))

我做错了什么?

2 个答案:

答案 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))