Я не уверен, если я понимаю ваш вопрос, но каждый ключ может иметь только один связанный с ним объект. В вашем случае вы используете объект 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). Надеюсь, мой ответ поможет вам начать с правильного пути.
Хорошо! Итак, как мне создать объект с прикрепленными к нему массивами? Например, мне нужен список игроков в моем UITableview, тогда каждому игроку нужно, чтобы его высота, вес и средний уровень баллов передавались контроллеру подробного представления - возможно, изображение тоже. Как получить все эти вещи, связанные с UITableViewCell? –
Думаю, я вижу, что вы хотите сделать сейчас. Я уточню свой ответ. – Darren
Это выглядит хорошо. Можете ли вы помочь мне немного больше? Как пометить ячейки? Это не работает: 'cell.textLabel.text = [object objectForKey: @" person "];' Как мне получить доступ к строкам с контроллера подробного представления? Как я уже сказал, я новичок. Это огромная помощь! :) –