1

我在值没有出现的 NSMutableDictionary 上遇到了这个问题。我的代码片段如下所示:

//将数据放入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,我不知道为什么。任何人都可以提供任何帮助吗?

4

2 回答 2

5

这是一个错字。您总是将值分配给 Address1 字典。

于 2010-03-14T09:03:49.363 回答
1

Laurent 的答案是正确的,您分配给了一个不正确的对象。

就我个人而言,我在编码时尽量减少可变对象。例如,您正在创建可变字典的地址并将它们存储在可变数组中。就个人而言,我会为地址使用不可变的字典。填充每个地址需要更多代码,但您可以将其重构为另一种方法。关键是,而不是更改地址。作为副作用,编译器会发现您的拼写错误,因为您一直在尝试更改不可变对象。

实际上,创建一个地址类可能比仅仅填充一个 NSDictionary 更好。

于 2010-03-14T13:48:39.503 回答