ios - 比较数组中对象的值并放入相同的部分

时间:2015-07-02 08:14:23

标签: ios objective-c arrays object

我目前对阵列和对象的逻辑存在问题,希望每个人都能治愈我的愚蠢,谢谢!

这就是我所拥有的:

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个小阵列的年份相比较,产品第一年的阵列,得到另一个小阵列,然后再做一次......但是不知道如何实现它

1 个答案:

答案 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


}