Как я могу получить все содержимое NSDictionary? - PullRequest
0 голосов
/ 19 августа 2011

Я хочу выбрать и извлечь все содержимое из NSDictionary.У меня есть такая структура

- (void)viewDidLoad {
    [super viewDidLoad];

    listaOggetti = [[NSMutableArray alloc] init];
    NSArray *arrayOne = [NSArray arrayWithObjects: @"First",@"Second",@"Third", nil];
    NSArray *sortedOne = [arrayOne sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
    NSDictionary *dictOne = [NSDictionary dictionaryWithObject:sortedOne forKey:@"Elementi"];

    NSArray *arrayTWo = [NSArray arrayWithObjects:@"First1",@"Second1" ..., nil];
    NSArray *sortedTwo = [arrayTwo sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
    NSDictionary *dictTwo = [NSDictionary dictionaryWithObject:sortedTWo forKey:@"Elementi"];

    NSArray *arrayThree = [NSArray arrayWithObjects:@"First2",@"Second2" ... , nil];
    NSArray *sortedThree = [arrayThree sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
    NSDictionary *dictThree = [NSDictionary dictionaryWithObject:sortedThree forKey:@"Elementi"];

    [listaOggetti addObject:dictOne];
    [listaOggetti addObject:dictTwo];
    [listaOggetti addObject:dictThree];
 }

И я хочу получить все объекты для ключа @ "Elementi" (должно быть около 45), чтобы добавить их в другой массив, например:

 NSDictionary *dict = [listaOggetti objectAtIndex:indexPath.section];
 NSArray *array = [dict objectForKey:@"Elementi"];
 cellValue = [array objectAtIndex:indexPath.row] ;

(При этом dict - это только 9 объектов, заполненных в моем проекте).

В конце массив * должен содержать около 45 объектов.Я пытался с allValues, но не работал.

Как я могу это исправить?

1 Ответ

1 голос
/ 19 августа 2011

Проще всего сделать это в -viewDidLoad:

NSMutableArray *allObjects = [[NSMutableArray alloc] init];
[allObjects addObjectsFromArray:sortedOne];
[allObjects addObjectsFromArray:sortedTwo];
[allObjects addObjectsFromArray:sortedThree];

Также вы можете получить их из словарей аналогичным образом:

NSMutableArray *allObjects = [[NSMutableArray alloc] init];
[allObjects addObjectsFromArray:[[listaOggetti objectAtIndex:0] objectForKey@"Elementi"];
[allObjects addObjectsFromArray:[[listaOggetti objectAtIndex:1] objectForKey@"Elementi"];
[allObjects addObjectsFromArray:[[listaOggetti objectAtIndex:2] objectForKey@"Elementi"];

Что вы не понимаете, так это то, что listaOggetti - это NSMutableArray, содержащий три объекта. Когда вы звоните

NSDictionary *dict = [listaOggetti objectAtIndex:indexPath.section];

В результате dict представляет собой один словарь, один из трех объектов в listaOggetti. Поэтому, когда вы звоните

NSArray *array = [dict objectForKey:@"Elementi"];

В результате array является объектом для ключа @"Elementi" этого единственного словаря dict. Ваш код не пытается объединить три РАЗЛИЧНЫХ словаря или объединить три массива, каждый из которых установлен как objectForKey:@"Elementi" для трех РАЗЛИЧНЫХ словарей.

Если вам нужен один массив, который является объединением всех трех разных массивов, используйте один из приведенных выше фрагментов. В обоих этих фрагментах результат allObjects - это NSMutableArray, содержащий все три массива по порядку.

...