我目前对阵列和对象的逻辑存在问题,希望每个人都能治愈我的愚蠢,谢谢!
这就是我所拥有的:
NSArray data = @[@[@"year",@"name"],
@[@"2015",@"A"],
@[@"2014",@"B"],....
];
//have 100 small array, year can be similar
所以我想问一下如何循环它们,将对象的年份与下一个对象进行比较,然后如果年份相同,则将其放入类似于数据数组的NSDictionary中,但键=年份:
NSDictionary dict = @[@"year":@[@"year",@"name"],
@"2015":@[@[@"2015",@"A"],@[@"2015",@"C"]],
@"2014":@[@"2014",@"B"],
@"2013":@[@"2013",@"D"],...
];
我尝试使用谓词给了我想要的东西......但我不知道如何用许多不同的年份来做这件事(我认为这是错误的,不确定)
NSString *searchTerm = @"2015";
//predicate1 is compare all the value with 2015, same then product array of them, predicate2 is product array of all array that dont have 2015 inside
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"ANY SELF == %@", searchTerm];
NSArray *filtered1 = [data filteredArrayUsingPredicate:predicate1];
NSLog(@"%@", filtered1);
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"ANY SELF != %@", searchTerm];
NSArray *filtered2 = [data filteredArrayUsingPredicate:predicate2];
NSLog(@"%@", filtered2);
这给了我2个阵列,在
中的小数组中有相同的年份//output of 2 array:
filtered1 = @[@[@"2015",@"diff name"],
@[@"2015",@"A"],..
];
filtered2 = @[@[@"other year",@"diff name"],
@[@"2014",@"B"],...
];
我认为得到第一个小阵列的年份,然后与其余99个小阵列的年份相比较,产品第一年的阵列,得到另一个小阵列,然后再做一次......但是不知道如何实现它
答案 0 :(得分:0)
使用for循环并检查以前的记录,我没有100%理解你想要做什么,但是你找到了成功但
NSString *prevData;
NSMutableArray *newData=[NSMutableArray array];
//check the last one
for (int i=0;i< data.count;i++)
{
NSArray currentData= [data objectAtIndex:i];
if(i!=0 && ([currentData objectAtIndex:0] isEqualTo:[prevData objectAtIndex:0]))
{
//add the data to newData
[newData addObject:currentData];
}
prevData=currentData
}