我有含有大量的自定义对象的单一的NSDictionary对象。这些对象将或者是B类或C类,这两者从类A.继承如果对象是B型的,他们将有一个内部标志(kindOfCIsh),其将被用于未来的分组。

我如何,我在程序不同的时间,获取包含这些对象的不同分组一个NSDictionary(或NSArray的)?在一种情况下,我会希望所有B的,但另一个时间我希望所有的C的对象,加上满足乙对象(kindOfCIsh == TRUE)。

有没有一种简单的方法来获得访问这些子集?也许使用过滤谓词?我可以,当然,循环通过整个词典和手动建立所需的子集,但是我有一种感觉,有一种更好的方法。

任何帮助理解。

有帮助吗?

解决方案

[[myDictionary allValues] filteredArrayUsingPredicate:预解码值];

其他提示

可以使用类别

的代码是这样的

@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