Swift 2 arch4random

В моем приложении я использую что-то вроде этого, чтобы получить произвольный текст на моем ярлыке, кроме моего основного let randomNumberкод, в xCode, он имеет более 300 случаев, чтобы много вставить здесь.:

let randomNumber = Int(arc4random_uniform(23))
var textLabel = "" as NSString
switch (randomNumber){
case 1:
    textLabel = "Kim."
    break
case 2:
    textLabel = "Phil."
    break
case 3:
    textLabel = "Tom"
    break
case 4:
    textLabel = "Jeff"
    break
default:
    textLabel = "Austin"
}
self.randomLabel.text = textLabel as String

Но проблема в том, что иногда он показывает один и тот же текст на этикетке 5-6 раз, а другие случаи даже не используются, потому что выбирают случайным образом. Так, как я могу выбрать случайным образом, но если пример варианта 1 уже показан, он не будет отображаться снова, пока не будут показаны все другие варианты.

1 ответ

Решение

Имейте массив Имен вместо гигантского случая переключения:

var names = ["Kim.", "Phil.", "Tom", "Jeff", "Austin"] // and all your remaining names
let originalNames = names

func getRandomName() -> String {
    if (names.count == 0) {
        names = originalNames
    }
    let randomNumber = Int(arc4random_uniform(UInt32(names.count)))
    return names.removeAtIndex(randomNumber)
}

Это гарантирует, что каждое имя будет напечатано, прежде чем начинать сначала. Пример вывода:

Том, Ким., Остин, Фил., Джефф

а потом начинается снова

Остин, Джефф, Фил....

Наконец, поместите что-то вроде следующего, где это соответствует вашим потребностям:

self.randomLabel.text = getRandomName()
Другие вопросы по тегам