Вы можете сделать что-то вроде этого:
NSPredicate* bar1Predicate = [NSPredicate predicateWithFormat:@"SELF.class == %@", [Bar1 class]];
NSArray* bar1z = [children filteredArrayUsingPredicate:bar1Predicate];
for(Bar1* bar in children) {
// do something great
}
Важно отметить, однако, что это не будет работать со многими стандартными классами Какао, такими как NSString, NSNumber и т. Д., Которые используют кластеры классов или специальныеклассы реализации (например, все, что бесплатно для мостов с типом CoreFoundation), так как классы не будут точно совпадать.Тем не менее, это будет работать с классами, которые вы определяете, пока класс действительно является экземпляром Bar1.
Примечание об акценте : пользователь @Alex предположил, что, возможно, не ясно, что классы должныточно соответствует моей записке выше, поэтому я повторяю это.Классы должны точно соответствовать, чтобы этот фильтр работал, поэтому, если вы создаете подкласс Bar1 или предоставляете какой-то прокси-класс, вам нужно будет настроить фильтр для включения этих классов.Как написано, только экземпляров Bar1
будут возвращены в отфильтрованном массиве.