使用数组来防止使用案例?

时间:2015-05-04 03:25:23

标签: ios swift

所以我有这个,

    func doStuff() {
       //blahblahblah
    }

    var randomNumber = arc4random() % 4
    randomNumber += 1

    switch(randomNumber) {

    case 1:
    doStuff()
    break

    case 2:
    doStuff()
    break

    case 3:
    doStuff()
    break

    case 4:
    doStuff()
    break
    }

现在我需要它来做这样的事情

    func doStuff() {
       //blahblahblah
    }

    var alreadyUsed = [""]

    var randomNumber = arc4random() % 4
    randomNumber += 1

    if randomNumber is not inside alreadyUsed {

    switch(randomNumber) {

    case 1:
    doStuff()
    alreadyUsed.append("1")
    break

    case 2:
    doStuff()
    alreadyUsed.append("2")
    break

    case 3:
    doStuff()
    alreadyUsed.append("3")
    break

    case 4:
    doStuff()
    alreadyUsed.append("4")
    break
    }
    }

基本上,我正在尝试随机选择一个案例,然后在下次运行该函数时再次选择相同的案例。我正在使用第一块代码作为函数。在该函数中使用了一个案例之后,我不希望该函数再次使用它。我希望这是有道理的。

谢谢你们!

编辑:虽然我发现它更有用,但它甚至不必是一个数组,只要它完成工作。

1 个答案:

答案 0 :(得分:5)

var someArray = [1,2,3,4]

let index = Int(arc4random_uniform(UInt32(someArray.count)))
let randomNumber = someArray[index]

someArray.removeAtIndex(index)

这应该做你想要的。

  • 首先,您创建一个包含可用数字的数组
  • 让它随机选择索引号
  • 删除数组中的数字

我已经将UInt32的转换更改为Int,因为根据此post

  

Int(arc4random())将在32位平台上执行50%的崩溃,因为UInt32不适合Int32