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

时间:2015-01-01 12:10:11

标签: ios arrays xcode swift for-loop

我正在创建一个游戏,其中取决于所选择的“滑动”次数(假设为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)}
    }

据我所知,此代码创建了一个包含三个UI 的数组,其中可以通过swipeArray [0],swipeArray [1]和swipeArray [2] <来访问/ strong>即可。我的第一个问题是这个swipeArray会保持多长时间?直到关闭视图? 当用户输掉时,我应该有一个“刷新按钮” - 如果是这样,我该怎么做?

然后我有一个属性观察者。您会注意到 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
                }
            }
}

图案图片来自名为pattern7pattern56 84张图片。我的第二个问题是,我怎么能编写for循环来遍历每个swipeArray [x]

提前谢谢你,

威尔

1 个答案:

答案 0 :(得分:0)

  

这个swipeArray会保持多长时间?

这有点太开放了。它会保持不变,直到你为它分配一个新值,无论是从相同的代码位还是从不同的部分。只有你可以通过查看你的代码知道什么时候。

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

您可能会考虑编写第一个代码段的循环:

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]时,有更好的表达方式。