【问题标题】:How do I add multiple keys and values to an NSMutableDictionary without using an array?如何在不使用数组的情况下向 NSMutableDictionary 添加多个键和值?
【发布时间】:2010-01-14 03:16:47
【问题描述】:

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

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 assignment_1b[6035:a0f] http://www.apple.com

【问题讨论】:

  • 您显示的代码应该可以正常工作并且不会覆盖任何内容。为什么你怀疑它不起作用?
  • 编辑帖子以显示控制台日志和 nslog 语句

标签: objective-c nsmutabledictionary key-value


【解决方案1】:

我很惊讶代码不只是崩溃。见这里:

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

您分配给 urlA 两次,但从未分配给 urlB。修复它,您将看到记录的正确值。

还请注意,您可以这样做:

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

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

【讨论】:

  • 哇,我完全忽略了第二个urlA。很好的收获。
  • 他还把setValue:forKey:setObject:forKey:混在一起
  • 好的,这就是发生的事情,我认为这是有道理的,让我去尝试修复它,看看会发生什么,感谢您的帮助。
  • 当我这样做的时候:NSLog(@"dictionary: %@", anNSDictionary);它记录:2010-01-13 11:44:26.785 assignment_1b[6170:a0f] { Apple = "apple.com"; "斯坦福大学" = "stanford.edu";知道为什么 'Apple' 没有用引号括起来,而所有其他元素都用引号括起来吗?
  • @nickthedude:NSDictionary 的描述方法不会在没有标点符号的单个单词周围加上引号。
猜你喜欢
  • 1970-01-01
  • 2015-03-06
  • 2018-02-01
  • 1970-01-01
  • 2021-12-24
  • 2023-01-13
  • 1970-01-01
  • 2013-09-12
  • 2011-08-28
相关资源
最近更新 更多