Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 用for循环填充NSMutableDictionary,然后它显示加载的最后一个值_Ios_Nsmutabledictionary - Fatal编程技术网

Ios 用for循环填充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

您好,我曾尝试使用for循环用两个NSMutableArray数据填充NSMutableDictionary,当循环完成时,NSMutableDictionary只显示最后加载的值,有什么问题吗?遵守守则

 -(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"];
“代码转储”,逻辑错误,无未来用途。“代码转储”,逻辑错误,无未来用途。