2011-05-06 2 views
0

Je veux récupérer les valeurs contenues dans un NSDictionary. Je fais ceci:Récupérer la valeur dans un NSDictionary

MyCommon *pCommon = [MyCommon Singleton]; 
NSArray *result = pCommon.res; //res is define and retain in common.m. This is the array. 
NSDictionary *dataItem = [result objectAtIndex:????]; 

je ne sais pas ce que je peux mettre pour remplacer le ????

Merci

+0

À quel index se trouve votre dictionnaire? – kubi

+0

'result' est-il un tableau de NSDictionary? – Rod

+0

Besoin de plus d'informations? Difficile de voir ce que vous essayez d'accomplir ici. objectAtIndex prend une valeur NSUInteger. –

Répondre

2

Contrairement à d'autres langages, Objective-C fait une distinction entre les tableaux et les dictionnaires.

Un tableau est une collection, indexée par nombre. Un dictionnaire est une collection indexée par des objets (généralement des chaînes, mais peut être d'autres types).

En plus de cela, Objective-C fait une distinction entre les tableaux et les dictionnaires mutables et non modifiables. NSArray et NSDictionary ne peuvent pas être modifiés après leur création. Si vous devez ajouter des objets à votre collection, utilisez NSMutableArray et NSMutableDictionary à la place.

NSArray * myArray = [[NSArray alloc] initWithObjects: @"text1", @"text2", @"text3", nil]; 
// you can then access a member by using: 
NSString * text = [myArray objectAtIndex: 0]; 

NSMutableDictionary * myDict = [[NSMutableDictionary alloc] init]; 
// add an object 
[myDict setObject:@"text1" forKey:@"key1"]; 
[myDict setObject:@"text2" forKey:@"key2"]; 
// you can retrieve objects using: 
text = [myDict objectForKey: @"key1"]; 

[myArray release]; 
[myDict release]; 
0

Eh bien, result est un NSArray, pas NSDictionary, donc il suffit de mettre l'index de l'élément qui vous intéresse. Les tableaux sont indexés par des entiers de zéro.

Dans le cas où votre result est un NSDictionary et non un NSArray, utilisez la méthode objectForKey: au lieu de objectAtIndex:.

Questions connexes