Spa*_*Dog 1 iphone cocoa cocoa-touch objective-c nsdictionary
我认为在字典中查找对象是否更简单,但看起来并非如此.
我有一个NSMutableDictionary只有一个名为"products"的键.
我有几个产品动态添加到字典中,使用类似的东西
[myDict addObject:@"banana" forKey:@"products"];
[myDict addObject:@"orange" forKey:@"products"];
[myDict addObject:@"grapes" forKey:@"products"];
Run Code Online (Sandbox Code Playgroud)
等等
在某些时候,我想知道,例如,香蕉是否在字典上.
有没有办法做到这一点?我的意思是,只是想知道一个对象是否在字典上?
谢谢你的帮助.
你误解了字典是如何工作的.字典为单个密钥存储单个值.因此,在代码运行后,将保留一个键值对:=> .如果您需要一个键指向多个对象,那么您的密钥将需要指向(或者如果您不关心顺序),然后您从而不是从字典中添加和删除内容.myDict@"products"@"grapes"NSMutableArrayNSMutableSetNSMutableArray
如果这将是字典中所有内容的基本结构,您可能需要考虑为字典创建一个包装器,如下所示:
//DDMutableMultiValueDictionary.h
@interface DDMutableMultiValueDictionary : NSObject {
NSMutableDictionary * dict;
}
- (void) addObject:(id)value forKey:(id)key;
- (void) removeObject:(id)value forKey:(id)key;
- (BOOL) containsObject:(id)value forKey:(id)key;
@end
//DDMutableMultiValueDictionary.m
#import "DDMutableMultiValueDictionary.h"
@implementation DDMutableMultiValueDictionary
- (id) init {
if (self = [super init]) {
dict = [[NSMutableDictionary alloc] init];
}
return self;
}
- (void) dealloc {
[dict release];
[super dealloc];
}
- (void) addObject:(id)value forKey:(id)key {
NSMutableArray * values = [dict objectForKey:key];
if (values == nil) {
values = [NSMutableArray array];
[dict setObject:values forKey:key]
}
[values addObject:value];
}
- (void) removeObject:(id)value forKey:(id)key {
NSMutableArray * values = [dict objectForKey:key];
[values removeObject:value];
}
- (BOOL) containsObject:(id)value forKey:(id)key {
NSMutableArray * values = [dict objectForKey:key];
return [values containsObject:value];
}
@end
Run Code Online (Sandbox Code Playgroud)
这无论如何都不完整,但它可以让你了解如何制作它.
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |