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()