28

有没有比简单迭代更有效的方法将对象添加到 NSMutable 字典?

例子:

// Create the dictionary

NSMutableDictionary *myMutableDictionary = [NSMutableDictionary dictionary];    

// Add the entries

[myMutableDictionary setObject:@"Stack Overflow" forKey:@"http://stackoverflow.com"];
[myMutableDictionary setObject:@"SlashDotOrg" forKey:@"http://www.slashdot.org"];
[myMutableDictionary setObject:@"Oracle" forKey:@"http://www.oracle.com"];

只是好奇,我确信这是必须完成的方式。

4

4 回答 4

20
NSDictionary *entry = [NSDictionary dictionaryWithObjectsAndKeys:
  [NSNumber numberWithDouble:acceleration.x], @"x",
  [NSNumber numberWithDouble:acceleration.y], @"y",
  [NSNumber numberWithDouble:acceleration.z], @"z",
  [NSDate date], @"date", 
  nil];
于 2009-07-12T22:59:23.640 回答
15

如果您事先拥有所有对象和键,则可以使用 NSDictionary 对其进行初始化:

dictionaryWithObjects:forKeys:

当然,这会给你不可变的字典而不是可变的。这取决于您的使用情况,您可以从 NSDictionary 获取可变副本,但在这种情况下使用原始代码似乎更容易:

NSDictionary * dic = [NSDictionary dictionaryWith....];
NSMutableDictionary * md = [dic mutableCopy];
... use md ...
[md release];
于 2009-07-12T22:57:27.887 回答
8

请允许我向开始的人添加一些信息。

可以使用Objective-c 文字创建NSDictionary具有更友好语法的 a :

NSDictionary *dict = @{ 
    key1 : object1, 
    key2 : object2, 
    key3 : object3 };
于 2013-07-08T13:12:10.427 回答
0
NSMutableDictionary *example = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@5,@"burgers",@3, @"milkShakes",nil];

对象在键之前。

于 2016-07-22T02:51:21.303 回答