Objective C - 使用NSDictionary?

问题描述:

我在我的字典中有以下键值,我试图循环遍历每一行并记录每个项目,这是可能的使用NSDictionary?Objective C - 使用NSDictionary?

请注意,我的钥匙不是唯一

Key  Value 
A   1 
B   2 
B   3 
B   4 
C   5 
C   6 
C   7 
D   8 
+2

您的密钥必须是唯一的,否则您将最终更改由密钥存储的值,而不是创建新密钥。 – 2012-03-06 21:50:54

+0

我不能拥有唯一的密钥,这就是我的数据结构。是否有相当于哈希映射或类似的东西我可以使用? – aryaxt 2012-03-06 21:53:04

+1

散列图不能有重复键。 – 2012-03-06 21:54:41

这可能是坏的方式做到这一点,但如果你的字典是不是太大了,你可以试试:

Key  Value 
1  Array with "A" and "1" 
2  Array with "B" and "2" 
3  Array with "B" and "3" 
//and so on 

然后你就可以轻松地遍历它并记录你需要(在这种情况下[theArray objectAtIndex:1])什么。

希望它可以帮助

+0

这正是我最终做的,NSDictionaries的数组。 – aryaxt 2012-03-07 01:06:18

NSDictionary你的钥匙必须是唯一的。从docs

字典中的键值对称为条目。每个条目 由表示该键的一个对象和作为该键的值的第二对象组成。在字典中,密钥是唯一的。 也就是说,单个字典中没有两个密钥相等(由isEqual :)确定为 。

一旦你有一个NSDicitonary,您可以用获得通过按键访问和循环:

- (NSArray *)allKeys 

编辑:

获得类似功能,请here

这听起来像它是你正在寻找 干杯什么,

+0

这并没有帮助,因为键不是唯一的,所以每次我询问键的值时,都会返回第一个键。 – aryaxt 2012-03-06 21:54:27

+0

对不起,但NSDicitonarys没有存储重复密钥的方法。我正在寻找一个不会为你使用字典的解决方案。 – 2012-03-06 21:55:58

+0

而且它总是会做同样的工作 – 2012-03-06 21:56:26

在一个词典中,键是独一无二的。

你必须有每个键一个值。

如果添加了已经存在于一个NSMutableDictionary关键,字典本身只会用新值覆盖当前键的值,而旧的价值将不存在任何进一步的

但是,如果你想通过字典环,看看这篇文章:

looping through an NSMutableDictionary

我注意到你的第二个值是相邻的号码 - 所以,你确定你不是说要使用NSArray(一个有序列表)含有“A”,“B”,“ B“,”B“,”C“,”C“,”C“,”D“?然后循环:

NSArray* array = [NSArray arrayWithObjects:@"A", @"B", @"B", @"B", @"C", @"C", @"C", @"D", nil]; 
for (NSUInteger i = 0; i < [array count]; i++) 
{ 
    NSUInteger value = i+1; 
    NSString* key = [array objectAtIndex:i]; 
    //Your code here. 
}