7

我正在尝试在 Swift 中生成一个随机数:

var amountOfQuestions = 2
var randomNumber = Int(arc4random_uniform(amountOfQuestions - 1)) + 1

但这会导致错误:

无法将“Int”类型的值转换为预期的参数类型“UInt32”

问题是什么?关于我可以做些什么来解决这个错误的任何想法?

4

3 回答 3

7

将 amountOfQuestions 声明为 UInt32:

var amountOfQuestions: UInt32 = 2

PS:如果你想在语法上正确,那就是问题的数量

于 2016-02-22T20:03:59.893 回答
4

使您的amountOfQuestions变量成为UInt32而不是Int编译器推断的。

var amountOfQuestions: UInt32 = 2

// ...

var randomNumber = Int(arc4random_uniform(amountOfQuestions - 1)) + 1

arc4random_uniform需要一个UInt32.

来自达尔文文档

arc4random_uniform(u_int32_t upper_bound);
于 2016-02-22T20:03:43.533 回答
4

第一件事:方法“arc4random_uniform”需要一个 UInt32 类型的参数,所以当你把那个减法放在那里时,它会将你写的“1”转换为 UInt32。

第二件事:在swift中,您不能从Int(在本例中为'amountOfQuestions')中减去UInt32(公式中的'1')。

要解决这一切,您必须考虑将“amountOfQuestions”的声明更改为:

var amountOfQuestions = UInt32(2)

这应该够了吧 :)

于 2016-02-22T20:08:34.637 回答