Swift:带有for循环的图像和变量中的随机数数组

Swift: Random number arrays inside images and variables with a for loop

我正在创建一个游戏,其中 根据选择的 'swipes' 的数量(假设为 3),屏幕上会一个接一个地显示 3 种不同的模式。 我正在开发第一个模式。

所以我有这个:

if (swipes.no_of_swipes) == 3 {
        swipeArray = Array<UInt32>(count: 3, repeatedValue: 0)
        for i in 0 ..< 3 {
            swipeArray[i] = arc4random_uniform(84)}
    }

据我所知,这段代码创建了一个包含三个 UInts 的数组可以通过执行 swipeArray[0]、swipeArray[1] 来访问它, 和 swipeArray[2]。我的第一个问题是 这个 swipeArray 会保持多长时间不变?直到关闭视图? 当用户输了时,我是否应该 'refresh button' - 如果是,我将如何制作?

然后我有一个属性观察器。您会注意到 for 循环,我用它来保持代码简洁。我知道我可以在这里的某个地方做类似 x++ 的事情,这样它就会遍历每一个。

var playBegin: Bool = false{
    didSet {
        if playBegin == true {
            println("\(playBegin)")
            var swipes = Menu()
            if (swipes.no_of_swipes) == 3 {
                for i in 0 ..< 3 {
                    patternRoom.image = UIImage(named: "pattern\(swipeArray[x])")
                    //rest of code
                }
            }
}

图案图像来自 一组 84 张图像,名称如 pattern7pattern56。我的第二个问题是,我如何编写 for 循环以遍历每个 swipeArray[x]

提前谢谢你,

how long will this swipeArray stay the same?

这有点太开放了。它会保持不变,直到您从同一段代码或不同的部分为其分配新值。只有您可以通过查看您的代码知道那会是什么时候。

由于您表示有兴趣保持代码简洁,这里有一些代码提示。

您可能会考虑像这样编写第一个片段的循环:

swipeArray = (0..<swipes.no_of_swipes).map { _ in
    arc4random_uniform(84)
}

这结合了创建新数组和填充值。顺便说一句,以防万一你没有意识到,不能保证这个数组不会两次包含相同的值。

swipeArray 设为 [Int] 类型可能比 [UInt32] 更好,并将 arc4random 的结果直接转换为 Int离开:

Int(arc4random_uniform(84))

否则 UInt32 可能会很麻烦。

对于你的第二个 for 循环,你可以这样做:

for i in swipeArray {
    patternRoom.image = UIImage(named: "pattern\(i)")
    // rest of code
}

写 Swift 时,通常(但不总是),当你发现自己使用 array[x] 时,有一种更好的表达方式。