初始化NSMutableDictionary

时间:2014-08-18 12:38:10

标签: ios objective-c nsmutabledictionary

我正在开发一个 iOS 应用程序,我想在其中使用NSMutableDictionary。基本上我正在做的是将java代码转换为objectiveC。

所以在java中我有这样的东西:

Map<String, ClassA> dict1 = new HashMap<>();
Map<Integer,Character> dict2 = new HashMap<>();
Map<Integer, Map<String,String>> dict3 = new HashMap<>();

有人可以指导我使用NSMutableDictionary作为上述三行的Obj-C等效代码,以及如何在字典中设置和获取对。

2 个答案:

答案 0 :(得分:12)

Objective-C集合类不是强类型的,因此所有三个字典都将使用:

创建
NSMutableDictionary *dictX = [NSMutableDictionary new];

为了填充字典,请使用[NSMutableDictionary setObject:forKey:]

[dict1 setObject:classAInstance
          forKey:@"key1"];
[dict2 setObject:[NSString stringWithFormat:@"%c", character]
          forKey:@(1)];
[dict3 setObject:@{ @"innerKey" : @"innerValue" }
          forKey:@(2)];

答案 1 :(得分:9)

由于Objective C没有泛型类型,所以你需要输入的是:

NSMutableDictionary *dict1 = [[NSMutableDictionary alloc] init];
NSMutableDictionary *dict2 = [[NSMutableDictionary alloc] init];
NSMutableDictionary *dict3 = [[NSMutableDictionary alloc] init];

有几种获取和设定价值的方法。简写形式很像访问数组。 用速记设置值:

dict1[@"key"] = @"value";

用速记来获取值:

NSString *value = dict1[@"key"];

更详细的语法是这样的:

[dict1 setObject:@"value" forKey:@"key"];
NSString *value = [dict1 valueForKey:@"key"];