Я бы, вероятно, пошел с подходом, который использовал NSMutableDictionary
вместо массива в качестве основной структуры данных.
-(void) addDrink:(Drink) drink
{
//_drinks has been initialised earlier and is of type NSMutableDictionary
NSMutableArray categoryDrinks = [_drinks objectForKey:drink.categories];
if (categoryDrinks == nil)
{
categoryDrinks = [[[NSMutableArray alloc] init] autorelease];
[_drinks setObject:categoryDrinks forKey:drink.categories];
}
[categoryDrinks addObject:drink];
}
Это имитирует структуру, которую вы показываете на своих изображениях, количество предметов в каждой категории теперь можно узнать, позвонив по номеру [[_drinks objectForKey:categoryName] count]
.Посмотрите на яблочную документацию для NSMutableDictionary
и NSMutableArray
Если вы просто хотите, чтобы числа были SQL GROUP BY
Выражение, которое вы можете получить для подсчета категорий, делая что-то вроде этого
ВЫБЕРИТЕ CategoryColName, COUNT (CategoryColName) FROM TableName GROUP BY CategoryColName
Это даст вам пары с названием вашей категории и количеством
Один небольшой совет, в вашем Drinks
объекте вы используете свойство categories
.Я всегда стараюсь синхронизировать множество имен с типом данных.Это означает, что я использую множественное число только для чего-то, если это коллекция сортов.В противном случае я использую единственное число, это может быть расширено до столбцов SQL, в то время как столбец содержит категории всех напитков.Это все еще только одна категория на напиток.Вы назвали другие столбцы в единственном числе.