从字典中随机访问密钥

时间:2012-10-23 10:14:22

标签: objective-c

我有一个我想以随机顺序访问的对象字典。 它不一定是随机的,只是有很大的变化。

字典看起来像这样:

'customer0' : '<Customer Object>'
'customer1' : 'inactive'
'customer2' : 'inactive'
'customer3' : 'inactive'
'customer4' : '<Customer Object>'

该键对应于将用于表示游戏中的客户的UI元素,并且基本上我希望它们不是每次都以相同的顺序出现。

3 个答案:

答案 0 :(得分:3)

关于随机数read more here on stack。所以,如果你有字符串键,你可以像这样使用smth:

NSString *key = [NSString stringWithFormat:@"customer%d", arc4random()%5];
<customer object> *customObj = [yourDictionary objectForKey:key];

答案 1 :(得分:2)

在伪代码中:

  1. 创建结构的副本 - 您可以将密钥放入数组
  2. 选择从0到大小为-1的随机整数n
  3. 提取(如检索和删除)位置n
  4. 的元素
  5. 从2)重复,直到尺寸== 0

答案 2 :(得分:0)

我没有测试过这个,但是这些方面的东西应该达到你的目标:

//create dictionary
NSDictionary *dictionary = [NSDictionary dictionary];

//gather set of keys from array of keys
NSSet *keys = [NSSet setWithArray:[dictionary allKeys]];

//gather random key
NSString *key = [keys anyObject];

//gather dictionary value with key
NSString *value = [dictionary objectForKey:key];

通过从NSSet字典键创建NSArray,您可以使用anyObject从数组中收集随机密钥。

肯定有其他方法可以实现这一目标,但这是我能想到的最简洁的方法。