Как я могу получить доступ к определенным подмножествам большого NSDictionary в Какао?

StackOverflow https://stackoverflow.com/questions/442513

  •  22-07-2019
  •  | 
  •  

Вопрос

У меня есть один объект NSDictionary, который содержит большое количество пользовательских объектов. Объекты будут либо класса B, либо класса C, оба из которых наследуются от класса A. Если объекты имеют тип B, у них будет внутренний флаг (kindOfCIsh), который будет использоваться для будущей группировки.

Как я могу в разное время в моей программе получить NSDictionary (или NSArray), который содержит разные группировки этих объектов? В одном случае мне понадобятся все объекты B, но в другой раз мне понадобятся все объекты C, а также объекты B, которые удовлетворяют (kindOfCIsh == true).

Есть ли простой способ получить доступ к этим подмножествам? Возможно, используя предикаты фильтра? Я могу, конечно, пройтись по всему словарю и создать требуемое подмножество вручную, но у меня есть ощущение, что есть лучший способ.

Любая помощь приветствуется.

Это было полезно?

Решение

[[myDictionary allValues] FilterArrayUsingPredicate: pred];

Другие советы

Вы можете использовать категории

код выглядит примерно так

@interface NSDictionary (dictionaryForClass)

  -(NSMutableDictionary *) dictionaryWithObjectsKindOfClass:(Class)myClass;

@end

@implementation NSDictionary (dictionaryForClass)

-(NSMutableDictionary *) dictionaryWithObjectsKindOfClass:(Class)myClass;
{
  NSMutableDictionary *ret = [[[NSMutableDictionary alloc] init] autorelease];

  for (id object in self) {
    if ([object isKindOfClass:myClass]) {
       [ret addObject:object];
    }  
  }  
  return ret;

}

@end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top