Ios 用for循环填充NSMutableDictionary,然后它显示加载的最后一个值
您好,我曾尝试使用for循环用两个NSMutableArray数据填充NSMutableDictionary,当循环完成时,NSMutableDictionary只显示最后加载的值,有什么问题吗?遵守守则Ios 用for循环填充NSMutableDictionary,然后它显示加载的最后一个值,ios,nsmutabledictionary,Ios,Nsmutabledictionary,您好,我曾尝试使用for循环用两个NSMutableArray数据填充NSMutableDictionary,当循环完成时,NSMutableDictionary只显示最后加载的值,有什么问题吗?遵守守则 -(void)calculateDistance { self.distanceArray=[[NSMutableArray alloc]init]; self.dict=[[NSMutableDictionary alloc]init]; for (int i
-(void)calculateDistance
{
self.distanceArray=[[NSMutableArray alloc]init];
self.dict=[[NSMutableDictionary alloc]init];
for (int i=0; i<[self.nombre count]; i++) {
CLLocation *shopPosition=[[CLLocation alloc]initWithLatitude:[[self.latitud objectAtIndex:i] floatValue]longitude:[[self.longitud objectAtIndex:i]floatValue]];
self.userPosition=[[CLLocation alloc]initWithLatitude:self.currentLat longitude:self.currentLong];
self.distance=[shopPosition distanceFromLocation:self.userPosition];
[self.distanceArray addObject:[NSNumber numberWithFloat:self.distance]];
[self.dict setObject:[self.distanceArray objectAtIndex:i] forKey:@"distance"];
[self.dict setObject:[self.nombre objectAtIndex:i] forKey:@"nombre"];
}
NSLog(@" DICT %@",self.dict);
-(无效)计算状态
{
self.distanceArray=[[NSMutableArray alloc]init];
self.dict=[[NSMutableDictionary alloc]init];
对于(int i=0;i您总是将新值设置为相同的键:
[self.dict setObject:[self.distanceArray objectAtIndex:i] forKey:@"distance"];
[self.dict setObject:[self.nombre objectAtIndex:i] forKey:@"nombre"];
您应该改为使用NSMutableArray,并在每个循环周期添加一个新的NSDictionary
NSDictionary *dict = @{@"distance" : self.distanceArray[i],
@"nombre" : self.nombre[i]
};
[self.newMutArray addObject: dict];
始终将新值设置为相同的键:
[self.dict setObject:[self.distanceArray objectAtIndex:i] forKey:@"distance"];
[self.dict setObject:[self.nombre objectAtIndex:i] forKey:@"nombre"];
您应该改为使用NSMutableArray,并在每个循环周期添加一个新的NSDictionary
NSDictionary *dict = @{@"distance" : self.distanceArray[i],
@"nombre" : self.nombre[i]
};
[self.newMutArray addObject: dict];
这两行是您的问题。每次您获得一个新的nombre
或一个新的distanceArray
时,您都会将其保存到NSDictionary
中的同一个键中
因此,最终您的NSDictionary
将只有两个键,“distance”和“nombre”
您可能需要做的是为NSDictionary
对象创建一个NSMutableArray
,否则您必须开始为字典中的每个对象创建多个键,例如键:“nombre1”、“nombre2”等
尝试使用i
NSDictionary
对象制作一个NSMutableArray
。如下所示:
[array addObject:[NSDictionary dictionaryWithObjectsAndKeys:[self.distanceArray objectAtIndex:i],@"distance",[self.nombre objectAtIndex:i],@"nombre"]];
然后,最终的数组
对象将具有i
NSDictionary
对象,每个对象都包含一个nombre和一个距离键
要访问索引n
处的nombre和距离,您可以使用:
nombre = [[array objectAtIndex:n] objectForKey:@"nombre"];
distance = [[array objectAtIndex:n] objectForKey:@"distance"];
这两行是您的问题。每次您获得一个新的nombre
或一个新的distanceArray
时,您都会将其保存到NSDictionary
中的同一个键中
因此,最终您的NSDictionary
将只有两个键,“distance”和“nombre”
您可能需要做的是为NSDictionary
对象创建一个NSMutableArray
,否则您必须开始为字典中的每个对象创建多个键,例如键:“nombre1”、“nombre2”等
尝试使用i
NSDictionary
对象制作一个NSMutableArray
。如下所示:
[array addObject:[NSDictionary dictionaryWithObjectsAndKeys:[self.distanceArray objectAtIndex:i],@"distance",[self.nombre objectAtIndex:i],@"nombre"]];
然后,最终的数组
对象将具有i
NSDictionary
对象,每个对象都包含一个nombre和一个距离键
要访问索引n
处的nombre和距离,您可以使用:
nombre = [[array objectAtIndex:n] objectForKey:@"nombre"];
distance = [[array objectAtIndex:n] objectForKey:@"distance"];
“代码转储”,逻辑错误,无未来用途。“代码转储”,逻辑错误,无未来用途。