1

값이 오지 않는 NSMutableDictionary에이 문제가 있습니다. 해시에 다음Objective-C NSMutableDictionary 사라짐

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 good catch! –

+0

...... IMAO, 고마워! 초보자 실수. – user293313

1

Laurent의 대답이 정확합니다. 잘못된 개체에 지정하고 있습니다.

저는 개인적으로 코드 할 때 개인적으로 변경할 수있는 객체를 최소한으로 유지하려고합니다. 예를 들어, 변경 가능한 사전 인 주소를 작성하여 변경 가능한 배열에 저장하고 있습니다. 개인적으로, 나는 주소에 대해 불변 사전을 사용할 것이다. 각 주소를 채우는 데 약간 더 많은 코드가 필요하지만 다른 방법으로 리팩토링 할 수는 있습니다. 요점은 주소를 변경하는 것이 라기보다는. 부작용으로, 불변 객체를 변경하려했기 때문에 컴파일러가 오타를 발견했을 것입니다.

실제로 NSDictionary를 채우기보다는 주소 클래스를 만드는 것이 더 나을 것입니다.