Я не уверен, что понимаю ваш вопрос, но с каждым ключом может быть связан только один объект. В вашем случае вы используете объект NSString. Если вы заменили строку NSString каким-либо созданным вами объектом, например, AnObjectWithAThingAndAPersonAndAPlace, у вас может быть несколько атрибутов, связанных с каждым ключом.
Я думаю, я понимаю, что вы хотите сейчас. Вам нужен не объект с массивами, а массив объектов. Вы можете сделать это с объектами NSDictionary.
- (void)setupArray
{
NSMutableArray *objectArray = [[NSMutableArray alloc] init];
NSMutableDictionary *object1 = [[NSMutableDictionary alloc] init];
[object1 setObject:@"Apple" forKey:@"thing"];
[object1 setObject:@"Alex" forKey:@"person"];
[object1 setObject:@"Alabama" forKey:@"place"];
[object1 setObject:@"Azure" forKey:@"color"];
[objectArray addObject:object1];
NSMutableDictionary *object2 = [[NSMutableDictionary alloc] init];
[object2 setObject:@"Banana" forKey:@"thing"];
[object2 setObject:@"Bill" forKey:@"person"];
[object2 setObject:@"Boston" forKey:@"place"];
[object2 setObject:@"Blue" forKey:@"color"];
[objectArray addObject:object2];
datasource = [NSArray arrayWithArray:objectArray];
}
Тогда в вашем методе UITableViewDataSource
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSInteger row = [indexPath row];
NSDictionary *object = [datasouce objectAtIndex:row];
...
}
и вы можете получить все строки для этого объекта.
Если бы я сделал что-то подобное, я, вероятно, создал бы файл plist, содержащий массив. Тогда ваш метод setupArray может выглядеть так:
- (void)setupArray
{
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"YourFileName" ofType:@"plist"];
NSDictionary *plistData = [NSDictionary dictionaryWithContentsOfFile:filePath];
datasource = (NSArray*)[plistData objectForKey:@"ObjectsForTableView"];
}
Я хотел бы добавить еще несколько комментариев ... В случае, если это не очевидно, объекты, которые вы добавляете в свой словарь, не обязательно должны быть NSStrings, они могут быть любым объектом, таким как NSNumber, который может быть полезным для вас в случае ваших бейсболистов. Кроме того, вы можете создать собственный объект проигрывателя вместо использования NSDictionary. И вы можете захотеть иметь что-то вроде базы данных Core Data, в которой игроки хранятся и извлекаются (вместо того, чтобы жестко их кодировать или получать из plist-файла). Я надеюсь, что мой ответ поможет вам начать правильный путь.