Objective c 如何在不使用数组的情况下向NSMutableDictionary添加多个键和值?

Objective c 如何在不使用数组的情况下向NSMutableDictionary添加多个键和值?,objective-c,nsmutabledictionary,key-value,Objective C,Nsmutabledictionary,Key Value,我知道可以将所有键添加到数组中,并将其添加到字典的一侧,但我很好奇如何在字典的某个点添加或插入值。按照我现在的方式,我相信它只是不断覆盖最后的条目,为新条目腾出空间: NSMutableDictionary *bookmarks = [[NSMutableDictionary alloc] init]; NSString *keyA = @"Stanford University"; NSString *keyB = @"Apple"; NSString *keyC = @"cs193p.com

我知道可以将所有键添加到数组中,并将其添加到字典的一侧,但我很好奇如何在字典的某个点添加或插入值。按照我现在的方式,我相信它只是不断覆盖最后的条目,为新条目腾出空间:

NSMutableDictionary *bookmarks = [[NSMutableDictionary alloc] init];
NSString *keyA = @"Stanford University";
NSString *keyB = @"Apple";
NSString *keyC = @"cs193p.com";
NSString *keyD = @"Stanford on iTunes";
NSString *keyE = @"Stanford Mail";
NSString *surlA = @"http://www.stanford.edu";
NSString *surlB = @"http://www.apple.com";
NSString *surlC = @"http://www.cs193p.stanford.edu";
NSString *surlD = @"http://www.itunes.stanford.edu";
NSString *surlE = @"http://www.stanfordshop.com";

NSURL  *urlA;
urlA = [NSURL URLWithString:surlA]; 
NSURL  *urlB;
urlA = [NSURL URLWithString:@"http://www.apple.com"]; 


[bookmarks setValue:urlA forKey: keyA];
[bookmarks setObject:urlB forKey: keyB];
//[bookmarks setObject:urlC forKey: keyC];
//[bookmarks setObject:urlD forKey: keyD];
//[bookmarks setObject:urlE forKey: keyE];

 NSLog(@"%@", [bookmarks valueForKey:keyA]);
以下是输出:


2010-01-13 11:08:51.484作业\u 1b[6035:a0f]

我很惊讶代码并没有崩溃。请看这里:

NSURL  *urlA;
urlA = [NSURL URLWithString:surlA]; 
NSURL  *urlB;
urlA = [NSURL URLWithString:@"http://www.apple.com"]; 
您两次分配给urlA,但从未分配给urlB。修复该问题,您将看到记录的正确值

还请注意,您可以执行以下操作:

NSLog(@"dictionary: %@", anNSDictionary);

并查看字典中的所有键/值对。

我很惊讶代码不会崩溃。请看这里:

NSURL  *urlA;
urlA = [NSURL URLWithString:surlA]; 
NSURL  *urlB;
urlA = [NSURL URLWithString:@"http://www.apple.com"]; 
您两次分配给urlA,但从未分配给urlB。修复该问题,您将看到记录的正确值

还请注意,您可以执行以下操作:

NSLog(@"dictionary: %@", anNSDictionary);

并查看字典中的所有键/值对。

显示的代码应该工作正常,不会覆盖任何内容。为什么您怀疑它不起作用?编辑后显示控制台日志和nslog语句您显示的代码应该可以正常工作,不会覆盖任何内容。为什么你怀疑它不起作用呢?编辑后的帖子显示了控制台日志和nslog语句哇,我完全忽略了第二个
urlA
。很好。他还将
setValue:forKey:
setObject:forKey:
混合在一起,这就是发生的事情,我认为这是有意义的。让我去尝试修复它,看看会发生什么,谢谢你的帮助。当我这样做时:NSLog(@“dictionary:%@”,anNSDictionary);日志:2010-01-13 11:44:26.785作业_1b[6170:a0f]{Apple=“”;“斯坦福大学”=”}你知道为什么“Apple”没有用引号括起来,而所有其他元素都用引号括起来了吗?@nickthedude:NSDictionary的描述方法不会在没有标点的单词周围加引号。哇,我完全忽略了第二个
urlA
。很好。他还将
setValue:forKey:
setObject:forKey:
混合在一起,这就是发生的事情,我认为这是有意义的。让我去尝试修复它,看看会发生什么,谢谢你的帮助。当我这样做时:NSLog(@“dictionary:%@”,anNSDictionary);日志:2010-01-13 11:44:26.785作业_1b[6170:a0f]{Apple=“”;“斯坦福大学”=“;}你知道为什么“Apple”没有用引号括起来,而所有其他元素都用引号括起来了吗?@nickthedude:NSDictionary的描述方法不会在没有标点的单个单词周围加引号。