1

次の配列があります。複数の辞書を持つ 1 つの配列があります。同じ prod_type の辞書を取得し、一意のキーを持つ別の配列を作成する必要があります。

nsarray
  {
    {
      prod_type=abc;
      fund=100;
     };
        {
      prod_type=abc;
      fund=100;
     };
   {
      prod_type=abc;
      fund=100;
     };
   {
      prod_type=pqr;
      fund=100;
     };
   {
      prod_type=pqr;
      fund=100;
     };
   {
      prod_type=xyz;
      fund=100;
     };
   {
      prod_type=xyz;
      fund=100;
     };

上記の配列から次の配列形式が必要です

 nsarray=
  {
     abc=
     {
     {
      prod_type=abc;
      fund=100;
     };
        {
      prod_type=abc;
      fund=100;
     };
   {
      prod_type=abc;
      fund=100;
     };
      }

   pqr=
      {
       {
      prod_type=pqr;
      fund=100;
     };
   {
      prod_type=pqr;
      fund=100;
     };
    }
 xyz=
     {
       {
      prod_type=xyz;
      fund=100;
     };
   {
      prod_type=xyz;
      fund=100;
     };

      }

   }
4

3 に答える 3

2

望ましい結果を得るには、 NSPredicateを使用します。

NSString *selectedCategory=@"abc";

//filter array by category using predicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"prod_type == %@", selectedCategory];

NSArray *filteredArray = [yourAry filteredArrayUsingPredicate:predicate];

NSDictionary *abcDic = [NSDictionary dictionaryWithObject:filteredArray forKey:@"abc"];

[yourNewAry addObject:abcDic];

あなたは他の人のためにそれを繰り返すことができます

ここに述語の素晴らしい説明があります

于 2013-07-20T07:35:40.717 に答える
0

このようにしてみて、

    NSMutableDictionary *resultdict = [[NSMutableDictionary alloc]init];
    NSMutableArray *keysArray =[array mutableArrayValueForKey:@"prod_type"];//here you'l get all the prod_type values in an array
      for(int i=0;i<[keysArray count];i++){
          NSPredicate *resultPredicate=[NSPredicate predicateWithFormat:@"prod_type CONTAINS %@",[keysArray objectAtIndex:i]];
          NSArray* searchResults=[array  filteredArrayUsingPredicate:resultPredicate];
          [resultdict setObject:searchResults forKey:[keysArray objectAtIndex:i]];
    }
    NSLog(@"%@",resultdict);

元:-

NSMutableArray *array =[[NSMutableArray alloc]init];
    NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithObjects:@[@"abc",@"100"] forKeys:@[@"name",@"value"]];
    NSMutableDictionary *dict1 = [[NSMutableDictionary alloc]initWithObjects:@[@"pqr",@"100"] forKeys:@[@"name",@"value"]];
    NSMutableDictionary *dict2 = [[NSMutableDictionary alloc]initWithObjects:@[@"pqr",@"100"] forKeys:@[@"name",@"value"]];

    [array addObject:dict];
    [array addObject:dict1];
    [array addObject:dict2];

NSLog(@"%@",配列);

(
        {
        name = abc;
        value = 100;
    },
        {
        name = pqr;
        value = 100;
    },
        {
        name = pqr;
        value = 100;
    }
)


NSMutableDictionary *resultdict = [[NSMutableDictionary alloc]init];
    NSMutableArray *keysArray =[array mutableArrayValueForKey:@"name"];
      for(int i=0;i<[keysArray count];i++){
          NSPredicate *resultPredicate=[NSPredicate predicateWithFormat:@"name CONTAINS %@",[keysArray objectAtIndex:i]];
          NSArray* searchResults=[array  filteredArrayUsingPredicate:resultPredicate];
          [resultdict setObject:searchResults forKey:[keysArray objectAtIndex:i]];
    }

NSLog(@"%@",resultdict);

{
    abc =     (
                {
            name = abc;
            value = 100;
        }
    );
    pqr =     (
                {
            name = pqr;
            value = 100;
        },
                {
            name = pqr;
            value = 100;
        }
    );
}
于 2013-07-20T07:49:01.153 に答える