0

我正在尝试设置一个 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。

任何帮助,将不胜感激。

4

2 回答 2

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];
  }  
}
于 2013-04-24T02:04:03.597 回答
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];
    }  
}

“resultantArray”将仅包含唯一元素。

于 2014-01-17T09:17:03.730 回答