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

时间:2018-08-12 20:00:41

标签: swift arc4random

我创建了一个名为imageNames的列表。我用这部分代码来获得随机图像

@IBAction func showImages(_ sender: Any) {

    let RandomImage: Int = Int
        (arc4random_uniform(20))
    imageOne.image = UIImage (named:
        imageNames[RandomImage])

由于某种原因,它对我不起作用。我曾想过要制作一个var而不是og let,但仍然给我int = int

的错误

有人在乎协助吗?

5 个答案:

答案 0 :(得分:3)

摆脱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)
}

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

在Swift 4.2中,它仍然更容易

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

答案 3 :(得分:0)

我想你需要一行

let RandomImage = Int(arc4random_uniform(20))

也可以在这里寻找Swift 4.2随机数的生成

答案 4 :(得分:0)

我更喜欢使用shuffle()方法对数组元素进行随机重新排序。