0

NSDictionary オブジェクトの NSMutableArray からすべての重複を削除するように NSSet をセットアップしようとしていますが、NSSet を作成するために必要な値の 1 つを 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 に答える