Как получить доступ к случайному элементу в словаре в Swift

Итак, я получил следующий код:

var myDic = [String: Customer]()
let s1 = Customer("nameee", "email1")
let s2 = Customer("nameee2", "email2")
let s3 = Customer("nameee3", "email3")
myDic[s1.name] = s1
myDic[s2.name] = s2
myDic[s3.name] = s3

Как выбрать случайный элемент из словаря? Я думаю, что я должен использовать arc4random_uniform, но не мог найти на нем никакой документации.

Ответ 1

Вам нужно бросить некоторые вещи, но это, похоже, работает.

var dict:[String:Int] = ["A":123, "B": 234, "C": 345]
let index: Int = Int(arc4random_uniform(UInt32(dict.count)))
let randomVal = Array(dict.values)[index] # 123 or 234 or 345

В принципе, генерируйте значение случайного индекса между нулем и общим количеством элементов. Получите значения словаря в виде массива, а затем выберите случайный индекс.

Вы можете даже обернуть это в расширение для легкого доступа.