Когда я захватываю элемент из массива с помощью метода arc4random_uniform()
, тот же самый элемент массива часто захватывается более одного раза. Я пытаюсь сделать так, чтобы каждый элемент массива захватывался только один раз. Причина, по которой я пытаюсь это сделать, заключается в том, что более чем одна ячейка в UITableView
не имеет одного и того же текста. Вот массив для текста ячеек в UITableView
:Как захватить случайный элемент из массива без захвата одного и того же элемента более одного раза?
var definitions = ["Used to carry the pharoah","Used to carry bodies as a ceremony","Had a flat deck to carry a farmer's treasure","Daily, it made a trip around the world to carry Ra","Towed by smaller boats, carrying heavy objects","Used for business and pleasure by officials/nobles","Carried most Egyptians and some goods"]
В моем viewDidLoad()
метод, я сделал это, чтобы назвать случайные элементы из definitions
:
self.boats = [Boats(name: definitions[Int(arc4random_uniform(7))]),Boats(name: definitions[Int(arc4random_uniform(7))]),Boats(name: definitions[Int(arc4random_uniform(7))]),Boats(name: definitions[Int(arc4random_uniform(7))]),Boats(name: definitions[Int(arc4random_uniform(7))]),Boats(name: definitions[Int(arc4random_uniform(7))]),Boats(name: definitions[Int(arc4random_uniform(7))])]
Как я могу изменить мой код так два элемента не отображаются дважды в моем UITableView
? Спасибо!
Вы хотите случайно отсортировать массив? –
То, что вы ищете, называется «случайным перетасовкой» или «случайной перестановкой». [Fisher-Yates shuffle] (http://en.wikipedia.org/wiki/Fisher-Yates_shuffle) - одна из возможных реализаций. –