Я понимаю из вашего вопроса
У вас есть множество напитков, таких как
Drink *d1 = [[Drink alloc] init]
d1.name = @"Drink1";
d1.price = [NSNumber numberWithFloat:25.0];
Drink *d2 = [[Drink alloc] init]
d2.name = @"Drink2";
d2.price = [NSNumber numberWithFloat:35.0];
ИЛИ
NSArray *values1 = [NSArray arrayWithObjects:@"Drink1",[NSNumber numberWithFloat:25.0], nil];
NSArray *keys1 = [NSArray arrayWithObjects:@"Name",@"price", nil];
NSDictionary *d1 = [[NSDictionary alloc] initWithObjects:values1 forKeys:keys1];
NSArray *values2 = [NSArray arrayWithObjects:@"Drink2",[NSNumber numberWithFloat:55.0], nil];
NSArray *keys2 = [NSArray arrayWithObjects:@"Name",@"price", nil];
NSDictionary *d2 = [[NSDictionary alloc] initWithObjects:values1 forKeys:keys1];
self.drinks = [NSArray arrayWithObjects:d1,d2, nil];
[d1 release];
[d2 release];
Из приведенного выше случая
cell.textLabel.text = [[self.drinks objectAtIndex:indexPath.row] objectForKey:@"Name"];
вышеприведенное утверждение верно
Вы получаете средство исключения, Вы вставляете объекты в массив напитков, который поддерживает данные Key Value Pairs и который является String Data.
Я надеюсь, что выимея такой
self.drinks = [NSArray arrayWithObjects:@"Drink1",@"Drink2", nil];
В этом случае вы должны перейти с
cell.textLabel.text = [self.drinks objectAtIndex:indexPath.row];