Ios 使用Arc4random从列表中获取随机图像

Ios 使用Arc4random从列表中获取随机图像,ios,swift,arc4random,Ios,Swift,Arc4random,我创建了一个名为imageNames的列表。我用这段代码得到了一个随机图像 @IBAction func showImages(_ sender: Any) { let RandomImage: Int = Int (arc4random_uniform(20)) imageOne.image = UIImage (named: imageNames[RandomImage]) 因为某种原因,它对我不起作用。我想用var代替oglet,但它仍然

我创建了一个名为imageNames的列表。我用这段代码得到了一个随机图像

@IBAction func showImages(_ sender: Any) {

    let RandomImage: Int = Int
        (arc4random_uniform(20))
    imageOne.image = UIImage (named:
        imageNames[RandomImage])
因为某种原因,它对我不起作用。我想用var代替oglet,但它仍然在int=int时给我一个错误


有人愿意帮忙吗

我想你需要一句话

let RandomImage = Int(arc4random_uniform(20))

也可以在这里查看随机数生成

去掉
Int
)之间的换行符。这就是导致错误的原因

此外,您应该使用图像名称数组的大小来控制随机索引的范围。(如果您硬编码数字的范围,然后稍后更改图像名称数组,则如果数组中的名称较少,您将崩溃,或者如果不增加最大索引,则不会自动选择任何新名称。)

当我们在这里时,变量名应该从小写字母开始。考虑这个代码:

@IBAction func showImages(_ sender: Any) {
    //Sample image names - replace with your own array of names
    let imageNames = ["one", "two", "three"]

    let randomIndex: Int = Int(arc4random_uniform(UInt32(imageNames.count)))
    let randomName = imageNames[randomIndex]
    imageOne.image = UIImage(name: randomName)
}

以下是Swift 4.2的答案,其中不需要
arc4random

@IBAction func showImages(_ sender: Any) {
    let randomIndex = Int.random(in: 0..<imageNames.count)
    imageOne.image = UIImage(named: imageNames[randomIndex])
@iAction func showImages(uu发件人:任意){

让randomIndex=Int.random(in:0..我更喜欢使用
shuffle()
方法对数组元素进行随机排序。

在Swift 4.2中更容易

imageOne.image = UIImage(named: imageNames.randomElement())

无法将“Int.type”类型的值转换为指定的“Int”类型。解决方案在edit中,尽管=DSh_Khan,但不要编辑OPs原始代码。这会隐藏原始错误的原因,并使整个线程对阅读该错误的其他人非常混乱。如果要提供OPs问题的解决方案,请发布答案,但不要编辑original提出了一个问题来更正代码。Swift 4.2中的新radom()函数会很酷,但您应该指出Swift 4.2尚未发布。(有开发人员版本可用,但我们还不能将其用于应用商店提交,我不建议将其用于任何生产代码,包括内部应用。)@邓肯:这是一个很好的观点,谢谢。另外,我猜问题标题明确地询问了
arc4random
。如果你编辑你的答案,指出Swift 4.2尚未发布,我会投赞成票,因为它指出了该语言一个有用的新兴功能。
Int.random(in:imageNames.index)
顺便说一句,确保数组不是空的
Int.random(in:0..谢谢你的好心陌生人!我会再记住变量:)NP。你应该选择你认为最好的答案,然后接受它,这样其他人就知道你的问题得到了满意的回答。