1

У меня возникает эта проблема с NSMutableDictionary, где значения не появляются. Отрывки из моего кода выглядеть следующим образом:Objective-C NSMutableDictionary Disappearing

// данные в Hash, а затем в массив

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); 

} 

Таким образом, проблема только напечатан второй адрес, в 813, и я не могу понять почему. Может ли кто-нибудь помочь?

ответ

5

Это опечатка. Вы всегда присваиваете значения словарям Address1.

+0

@Laurent хороший catch! –

+0

...... IMAO, спасибо! Ошибка новичка. – user293313

1

Ответ Лорана верен, вы назначаете неправильный объект.

Лично я пытаюсь сохранить изменяемые объекты до минимума при кодировании. Например, вы создаете адреса, которые являются изменяемыми словарями и сохраняют их в изменяемом массиве. Лично я использовал бы неизменный словарь для адресов. Для заполнения каждого адреса потребуется немного больше кода, но вы можете реорганизовать его на другой метод. Дело в том, что вместо изменения адреса. В качестве побочного эффекта компилятор поймал бы вашу опечатку, потому что вы пытались бы изменить неизменяемый объект.

На самом деле, возможно, было бы лучше создать класс адресов, а не просто заполнить NSDictionary.

Смежные вопросы