2011-08-18 83 views
-3

我想从NSDictionary中选择和检索所有内容。我有这样如何检索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,但没有奏效。

我该如何解决?

+4

你是什么意思的“检索”?和“没有工作”? – jtbandes

+0

我想选择所有使用它们的内容。他们大约是45岁。并没有工作意味着它只能看到45个项目上的9个项目(arrayOne的前9个) – Phillip

回答

1

最简单的是做这-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] [email protected]"Elementi"]; 
[allObjects addObjectsFromArray:[[listaOggetti objectAtIndex:1] [email protected]"Elementi"]; 
[allObjects addObjectsFromArray:[[listaOggetti objectAtIndex:2] [email protected]"Elementi"]; 

你没有什么了解listaOggetti是包含三个对象的NSMutableArray。当你调用

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

结果是dict是一个字典,在listaOggetti三个对象之一。因此,当你调用

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

结果是array是一个单一的词典dict的关键@"Elementi"的对象。您的代码不会尝试组合三个不同的词典或合并三个数组,每个词组的设置为objectForKey:@"Elementi",以用于三个不同的词典。

如果你想要一个数组是三个不同数组的连接,那么使用上面提供的代码片断之一。在这两个片段中,结果是allObjects是一个NSMutableArray,按顺序包含所有三个数组。

+0

现在我明白了。事实上,分析代码,我注意到字典只有9个对象被填充。然后我明白了。再次感谢! – Phillip