3

我有一个包含大量自定义对象的 NSDictionary 对象。对象要么属于 B 类,要么属于 C 类,两者都从 A 类继承。如果对象属于 B 类,它们将有一个内部标志 (kindOfCIsh),用于将来的分组。

如何在我的程序中的不同时间获取包含这些对象的不同分组的 NSDictionary(或 NSArray)?在一种情况下,我需要所有 B,但另一种情况下,我需要所有 C 对象,以及满足 (kindOfCIsh == true) 的 B 对象。

有没有一种简单的方法可以访问这些子集?也许使用过滤谓词?当然,我可以遍历整个字典并手动构建所需的子集,但我觉得有更好的方法。

任何帮助表示赞赏。

4

2 回答 2

8

[[myDictionary allValues] filteredArrayUsingPredicate: pred];

于 2009-01-15T20:19:41.323 回答
1

您可以使用类别

代码是这样的

@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
于 2009-01-14T12:26:29.890 回答