当密钥是数字时,我应该在objC中使用什么数据结构作为键值对?

时间:2017-03-30 06:41:14

标签: ios objective-c sorting nsdictionary

我的样本数据如下

1 -> Apple
2 -> Banana
3 -> Cherries
4 -> Guava
5 -> Apple
..........
..........

现在,我需要将它存储在目标C的数据结构中。如您所见,键是数字的,值是NSString类型。通常会使用字典,但在这种情况下,我不能,因为 不是字符串。

我开始使用NSMapTable。只有NSMapTable的问题是,没有简单的方法来操纵诸如[NSDictionary allKeys]之类的东西。

我确实看到了一个名为[Maptable keyEnumerator]的内容,但keyEnumerator看起来不像是可以排序的。所以我对在这种情况下使用的最佳数据结构缺乏想法。任何建议都是受欢迎的。

2 个答案:

答案 0 :(得分:2)

如果您使用NSArray,则需要维护插入顺序,以将索引用作键。

由于NSMutableDictionary仅用于处理对象,因此一种简单的方法是将整数或浮点数包装在NSNumber对象中。

NSMutableDictionary *testDictionary = [[NSMutableDictionary alloc] init];
[testDictionary setObject:@"Apple"
                   forKey:[NSNumber numberWithInt:1]];
NSLog(@"Test dictionary: %@", testDictionary);

答案 1 :(得分:2)

您可以NSNumber使用keys

NSDictionary *myDic = @{
                            @(1): @"Apple",
                            @(2): @"Banana",
                            @(3): @"Cherries",
                            @(4): @"Guava"

                            };