使用NSSet从NSMutableArray中删除重复项

时间:2013-04-24 00:01:22

标签: ios objective-c nsmutablearray nsset

我正在尝试设置NSSet以从NSDictionary对象的NSMutableArray中删除所有重复项。但是我不确定如何将NSSet创建所需的值之一设置为NSMutableArray的NSDictionary对象中的元素...希望这是有道理的。

这就是NSDictionary的样子

ID = 22;
SERIESID = 33;
YEAREND = 2002;
YEARSTART = 1996;

这是我目前的代码

NSSet *uniqueElements = [NSSet setWithArray:yearArray];

// iterate over the unique items
for(id element in uniqueElements) {
    // create new NSArray of unique entries
}

我想知道如何根据yearArray中每个NSDictionary的SERIESID值创建一个唯一的yearArray。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

你可以试试这个

NSMutableArray *resultantArray = [NSMutableArray array];

for(NSDictionary *dict in yearArray)
{
  NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SERIESID == %@",
                                          [dict valueForKey:@"SERIESID"]];

  NSArray filteredArray = [resultantArray filteredArrayUsingPredicate:predicate];

  if(![filteredArray count])
  {
    [resultantArray addObject:dict];
  }  
}

答案 1 :(得分:0)

我已经更新了Suhas给出的解决方案:

NSMutableArray *resultantArray = [NSMutableArray array];
NSMutableArray * yearArrayCopy = [yearArray copy];
for(NSDictionary *dict in yearArrayCopy)
{
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SERIESID == %@",
                                      [dict valueForKey:@"SERIESID"]];

    NSArray *filteredArray = [yearArray filteredArrayUsingPredicate:predicate];

    if([filteredArray count])
    {
        [resultantArray addObject:dict];
        [yearArray removeObjectsInArray:filteredArray];
    }  
}

“resulArray”将只包含唯一元素。