2011-08-18 132 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