我正在尝试在Swift中生成一个随机数:
var amountOfQuestions = 2
var randomNumber = Int(arc4random_uniform(amountOfQuestions - 1)) + 1
但是这会导致以下错误:
无法将类型为 'Int' 的值转换为预期的参数类型 'UInt32'
问题出在哪里?有什么方法可以修复此错误吗?
我正在尝试在Swift中生成一个随机数:
var amountOfQuestions = 2
var randomNumber = Int(arc4random_uniform(amountOfQuestions - 1)) + 1
但是这会导致以下错误:
无法将类型为 'Int' 的值转换为预期的参数类型 'UInt32'
问题出在哪里?有什么方法可以修复此错误吗?
声明amountOfQuestions为UInt32类型:
var amountOfQuestions: UInt32 = 2
PS:如果你想在语法上做到正确,应该使用“number of questions”。
首先:
方法“arc4random_uniform”需要一个UInt32类型的参数,因此当你进行减法运算时,它将你写的‘1’转换为UInt32。
其次:在Swift中,你不能从Int(在这种情况下是‘amountOfQuestions’)中减去一个UInt32(即公式中的‘1’)。
为了解决这个问题,你需要考虑将‘amountOfQuestions’的声明更改为:
var amountOfQuestions = UInt32(2)
那应该就可以了 :)
将您的amountOfQuestions
变量声明为UInt32
,而不是编译器推断的Int
。
var amountOfQuestions: UInt32 = 2
// ...
var randomNumber = Int(arc4random_uniform(amountOfQuestions - 1)) + 1
arc4random_uniform
需要一个 UInt32
类型的参数。
根据 Darwin 文档:
arc4random_uniform(u_int32_t upper_bound);
amountOfQuestions
是通过计算获得的,例如从数组的大小中获取,那么适当的答案可能只是使用构造函数将其转换为UInt32,即UInt32(questions.count)。 - David Berry