如何在不使用数组的情况下向 NSMutableDictionary 添加多个键和值?
我知道您可以将所有键添加到数组中并将其添加到字典的一侧,但我很好奇如何在字典中的某个点添加或插入值。以我现在的方式,我相信它只是不断覆盖最后一个条目,为新条目腾出空间:
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
I know you could add all the keys to an array and add it to one side of the dictionary but I'm curious how you can add or insert a value at a certain point in the dictionary. The way i have it now it I believe it just keeps overwriting the last entries to make room for the new one:
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]);
heres the output:
2010-01-13 11:08:51.484 assignment_1b[6035:a0f] http://www.apple.com
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我很惊讶代码不仅仅崩溃了。请参阅此处:
您两次分配给 urlA,但从未分配给 urlB。解决这个问题,您将看到记录的正确值。
另请注意,您可以执行以下操作:
并查看字典中的所有键/值对。
I'm surprised that code doesn't just crash. See here:
You are assigning to urlA twice and never assigning to urlB. Fix that and you'll see the correct value logged.
Note also that you can do this:
And see all of the key/value pairs in the dictionary.