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
这可能是坏的方式做到这一点,但如果你的字典是不是太大了,你可以试试:
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]
)什么。
希望它可以帮助
这正是我最终做的,NSDictionaries的数组。 – aryaxt 2012-03-07 01:06:18
在NSDictionary
你的钥匙必须是唯一的。从docs:
字典中的键值对称为条目。每个条目 由表示该键的一个对象和作为该键的值的第二对象组成。在字典中,密钥是唯一的。 也就是说,单个字典中没有两个密钥相等(由isEqual :)确定为 。
一旦你有一个NSDicitonary,您可以用获得通过按键访问和循环:
- (NSArray *)allKeys
编辑:
获得类似功能,请here
这听起来像它是你正在寻找 干杯什么,
这并没有帮助,因为键不是唯一的,所以每次我询问键的值时,都会返回第一个键。 – aryaxt 2012-03-06 21:54:27
对不起,但NSDicitonarys没有存储重复密钥的方法。我正在寻找一个不会为你使用字典的解决方案。 – 2012-03-06 21:55:58
而且它总是会做同样的工作 – 2012-03-06 21:56:26
在一个词典中,键是独一无二的。
你必须有每个键一个值。
如果添加了已经存在于一个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.
}
您的密钥必须是唯一的,否则您将最终更改由密钥存储的值,而不是创建新密钥。 – 2012-03-06 21:50:54
我不能拥有唯一的密钥,这就是我的数据结构。是否有相当于哈希映射或类似的东西我可以使用? – aryaxt 2012-03-06 21:53:04
散列图不能有重复键。 – 2012-03-06 21:54:41