Поскольку вы предоставили только очень расплывчатую информацию о требованиях, я покажу очень общий подход, который я использую с блоками:
записать категорию в массив:
-(NSArray *)filter:(BOOL (^)(id))filterBlock
{
NSMutableArray *filteredArray = [NSMutableArray array];
for (id element in self)
if (filterBlock(element))
[filteredArray addObject:element];
return [NSArray arrayWithArray:filteredArray];
}
Теперь у вас есть свобода создавать конкретный блок, соответствующий вашим потребностям:
array = [array filter:^BOOL(id element) {
DemoData *demoData =(DemoData *)element
if([[demoData.sessionID componentsSeparatedByString:@","] isEqualToString:@"1"]){
return YES
}
return NO;
}];
Это отфильтровывает все сессионные идентификаторы, начинающиеся с '1'.
ответ на редактирование
Вы должны сделать это наоборот. У вас должен быть NSDictionray, который использует NSNumber в качестве ключей и содержит NSArrays с объектами. Чем вы можете просто спросить NSArray *array = [dict objectForKey:[NSNumber numberWithInt:5]]
. Теперь массив содержит все объекты, связанные с идентификатором (который вы действительно должны назвать по-другому).