我有一个包含大量自定义对象的NSDictionary对象。对象将是B类或C类,它们都从A类继承。如果对象是B类,它们将有一个内部标志(kindOfCIsh),用于将来的分组。
我如何在程序的不同时间获得包含这些对象的不同分组的NSDictionary(或NSArray)?在一种情况下,我会想要所有的B,但是另一次我会想要所有的C对象,以及满足的B对象(kindOfCIsh == true)。
是否有一种简单的方法可以访问这些子集?也许使用过滤谓词?当然,我可以遍历整个字典并手动构建所需的子集,但我觉得有更好的方法。
感谢任何帮助。
答案 0 :(得分:8)
[[myDictionary allValues] filteredArrayUsingPredicate:pred];
答案 1 :(得分: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