我有一個數組來自服務器的數據。我無法更改服務器的響應。合併具有多個值的數組以形成一個數組/字典
{
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