我有一个数组来自服务器的数据。我无法更改服务器的响应。合并具有多个值的数组以形成一个数组/字典
{
maximum = 30;
minimum = 1;
name = "Layer 1";
},
{
maximum = 60;
minimum = 45;
name = "Layer 1";
},
{
maximum = 60;
minimum = 45;
name = "Layer 2";
}
我在这个数组中有3个对象。其中2个名称相同,但具有不同的最小值和最大值。我想创建一个不会有重复的数组,因此例如我的数组中有2个对象,即“Layer 1”,“Layer 2”。第1层将具有2个最小值和最大值。
究竟应该如何样子:
{
name = "Layer 1"; value = [{maximum = 30;
minimum = 1},{ maximum = 60;
minimum = 45}];
},
{
maximum = 60;
minimum = 45;
name = "Layer 2";
}
我试图检查索引对象的“名称”,“我”是在指数等于该对象的“名称”,“I + 1" ,但它crahses,它说:“超出范围(2):
rows = [mivne_shichva count];
NSMutableArray *layers = [[NSMutableArray alloc]init];
NSMutableDictionary *layer = [[NSMutableDictionary alloc]init];
for (int i = 0; i<rows; i++) {
if ([[[mivne_shichva objectAtIndex:i]valueForKey:@"name"] isEqualToString:[[mivne_shichva objectAtIndex:i+1]valueForKey:@"name"]]) {
NSLog(@"name equals to name in i+1");
}
[layer setValue:[[mivne_shichva objectAtIndex:i]valueForKey:@"name"] forKey:@"name"];
[layer setValue:[[mivne_shichva objectAtIndex:i]valueForKey:@"minimum"] forKey:@"minimum"];
[layer setValue:[[mivne_shichva objectAtIndex:i]valueForKey:@"maximum"] forKey:@"maximum"];
[layers addObject:layer];
NSLog(@"layers :::: %@",layers);
}
我相信你尝试了一些东西,但它没有奏效。你介意分享一下最接近你目标的最新尝试吗?我们会帮你做到这一点。 – dasblinkenlight
是的,我试图检查索引“我”的对象是否等于对象在索引我+ 1,但它崩溃......超出界限(2)...说...我已将我的代码添加到我的问题 –
那是因为当你计划使用'i + 1'作为索引表达式时,你的循环需要上升到'rows - 1',而不是'rows'。 – dasblinkenlight