1

J'ai ce problème avec le NSMutableDictionary où les valeurs ne sont pas à venir. Snippets de mon code ressembler à ceci:Objective-C NSMutableDictionary Disparition

// données dans le Hash puis dans un tableau

yellowPages = [[NSMutableArray alloc] init]; 


NSMutableDictionary *address1=[[NSMutableDictionary alloc] init]; 
[address1 setObject:@"213 Pheasant CT" forKey: @"Street"]; 
[address1 setObject:@"NC" forKey: @"State"]; 
[address1 setObject:@"Wilmington" forKey: @"City"]; 
[address1 setObject:@"28403" forKey: @"Zip"]; 
[address1 setObject:@"Residential" forKey: @"Type"]; 

[yellowPages addObject:address1]; 


NSMutableDictionary *address2=[[NSMutableDictionary alloc] init]; 
[address1 setObject:@"812 Pheasant CT" forKey: @"Street"]; 
[address1 setObject:@"NC" forKey: @"State"]; 
[address1 setObject:@"Wilmington" forKey: @"City"]; 
[address1 setObject:@"28403" forKey: @"Zip"]; 
[address1 setObject:@"Residential" forKey: @"Type"]; 

[yellowPages addObject:address2]; 

//Iterate through array pulling the hash and insert into Location Object 
for(int i=0; i<locationCount; i++){ 
    NSMutableDictionary *anAddress=[theAddresses getYellowPageAddressByIndex:i]; 

    //Set Data Members 
    Location *addressLocation=[[Location alloc] init]; 
    addressLocation.Street=[anAddress objectForKey:@"Street"]; 
    locations[i]=addressLocation; 
    NSLog(addressLocation.Street); 

} 

Le problème est que la seconde adresse est imprimée, la 813 et je ne peux pas pourquoi? Quelqu'un peut-il offrir de l'aide?

Répondre

5

C'est une faute de frappe. Vous attribuez toujours des valeurs au dictionnaire Address1.

+0

@Laurent bonne prise! –

+0

...... IMAO, merci! Erreur de débutant. – user293313

1

La réponse de Laurent est correcte, vous l'affectez à un objet incorrect.

Personnellement, j'essaie de garder les objets mutables au minimum quand je code. Par exemple, vous créez des adresses qui sont des dictionnaires mutables et les stockent dans un tableau mutable. Personnellement, j'utiliserais un dictionnaire immuable pour les adresses. Il faudrait un peu plus de code pour remplir chaque adresse, mais vous pourriez refactoriser cela à une autre méthode. Le point est que plutôt que de changer une adresse. Comme un effet secondaire, le compilateur aurait attrapé votre faute de frappe parce que vous auriez essayé de changer un objet immuable.

En fait, il serait probablement préférable de créer une classe d'adresse plutôt que de simplement remplir un NSDictionary.