Я вижу, что вы используете GameplayKit, чтобы перетасовать свои вызовы, но теперь встроено перемешивание, чтобы ускорить себя.
struct DareStore {
private var dares: [String]
init(dares: [String]) {
self.dares = dares.shuffled()
}
mutating func next() -> String? {
if dares.count > 0 {
return dares.removeFirst()
}
return nil
}
}
В этом DareStore вы видите, что мы предоставляем init массив массива вызовов, и мытам перетасуй.Теперь всякий раз, когда вызывается next (), он просто удаляет и возвращает первый из перемешанных вызовов, пока не останется больше.
var dares = DareStore(dares: ["1", "2", "3"])
while let dare = dares.next() {
print(dare)
}