如何在Swift中访问字典中的随机元素

时间:2014-08-22 21:52:24

标签: random 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,但找不到任何文档。

3 个答案:

答案 0 :(得分:25)

你必须施展一些东西,但这似乎有效。

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

基本上,生成零和总项目数之间的随机索引值。将字典的值作为数组获取,然后获取随机索引。

您甚至可以将其包装在扩展程序中以便于访问。

答案 1 :(得分:1)

Swift 4.2+(Xcode 10+)引入了两种简单的可能性。

randomElement

let randomVal = myDict.values.randomElement()

randomElement

let randomVal = myDict.randomElement().value

答案 2 :(得分:0)

Swift 5+(Xcode 12+)还引入了随机化字典

let randomVal = myDict.randomElement()?.key