我在NSDictionary中有数据如下:
Value : Football, Key: SPORT
Value : Cricket, Key: SPORT
Value : Fastrack, Key: PRODUCT/SERVICE
Value : Audi USA, Key: CARS
Value : BMW, Key: CARS
Value : Facebook, Key: PRODUCT/SERVICE
Value : TED, Key: WEBSITE
Value : National Geographic, Key: MEDIA/NEWS/PUBLISHING
Value : MyWebProduct, Key: WEBSITE
我希望根据键对值进行分组。在这种情况下我需要做什么或实现这个的另一个合适的想法。我希望结果显示如下:
SPORT : Football, Cricket
CARS : Audi, BMW
...
任何有用的帮助......
答案 0 :(得分:1)
这对你有用吗,作为NSMutableDictionary的一个类别:
- (void)setObject:(id)object inArrayForKey:(id <NSCopying>)key
{
id current = [self objectForKey:key];
if (!current || ![current isKindOfClass:[NSArray class]]) {
[self setObject:@[object] forKey:key];
} else {
[self setObject:[(NSArray *)current arrayByAddingObject:object] forKey:key];
}
}
基本上,您将拥有一个干净的界面,将一个项目添加到与该键相关联的数组中。如果有多个项目,您可以选择仅将其设为数组,如果这是您的偏好。
如果您不熟悉添加类别,则可以将方法添加到现有类中。在Xcode中只做新文件&gt; objective-C类别,并在NSMutableDictionary
上添加类别。
答案 1 :(得分:1)
由于您在同一个键下分组了多个对象,因此数组字典将是包含数据的合适结构。
NSMutableDictionary *dict = [ [ NSMutableDictionary alloc ] init ];
NSArray *myItems = [ [ NSArray alloc ] initWithObjects:@"item one", @"item two", nil ];
[ dict setObject:myItems forKey:@"group of items" ];
然后您可以使用
访问该组[dict objectForKey:@"group of items"]
答案 2 :(得分:0)
NSDictionary
进行排序。如果你想要排序的字典,继续并实现你自己的子类(这是你可以为标准容器对象子类化的几个有效原因之一)。