2016-01-08 2 views
3

IOS 9, Objective-C
Привет, ребята,
я хочу, чтобы получить уникальный NSDictionaries от NSArray из NSDictionary.
Ситуация
я есть N номера NSDictionaries, которые, как сильфона (например, для.)
Как получить уникальный NSDictionary от NSArray из NSDictionary

staff  Description Price 
*****  *********** ***** 
01  'some string' 9.99 
05  'some string' 8.80 
01  'some string' 7.45 
01  'some string' 4.21 

из них, кто может направлять мне для достижения своей цели.

уникальный параметр staff

ПРИМЕЧАНИЕ: я хочу, чтобы получить уникальный NSArray для каждого.
как

{ 
     @[ 
      @[@{@"staff":01,@"description":@"some string",@"price":9.88}, 
       @{@"staff":01,@"description":@"some string",@"price":7.45}, 
       @{@"staff":01,@"description":@"some string",@"price":4.21} 
      ], 
      @[@{@"staff":05,@"description":@"some string",@"price":8.80} 
      ], 
     ]; 
    } 

заранее спасибо
Примечание: Этот вопрос может выглядит как возможный дубликат another question
но есть разница, что я не хочу, отсортированные данные каким-либо образом ,
Во-вторых, мне нужен массив из тех словарей, которые key->staff похож.

+0

уникальный на основе какого параметра? –

+0

@ Mr.T, на основе «персонала». спасибо за внимание. – Vats

+0

посмотреть в NSpredicate predicateiwithformat –

ответ

0

Благодаря «Mr.T» для обеспечения связи this.
после копаться в этой связи, я сумел достичь своей цели

//Step:-1 prepare your inputArray having NSDictionaries 

    //Step:-2 now,check that how many unique values avilable in inputArray 
    NSMutableSet* _info = [[NSMutableSet alloc]init]; 
    [inputArray enumerateObjectsUsingBlock:^(NSDictionary* info, NSUInteger index, BOOL* stop){ 
     [_info addObject:[info valueForKey:@"staff"]]; 
    }]; 
    NSLog(@"Unique Value:->\n%@",[_info allObjects]); 

    //Step:-3 now,run loop till count of unique objects and use NSPredicate to get filtered array like bellow, 
    //  you can use for..in.. OR for(int i=0;.....) OR Other but i preffer block 
    [_info.allObjects enumerateObjectsUsingBlock:^(NSString* staff, NSUInteger index, BOOL* stop){ 
     NSMutableDictionary* info = [[NSMutableDictionary alloc]init]; 
     [info setValue:staff forKey:@"table"]; 
     NSArray *filtered = [inputArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(staff == %@)", staff]]; 
     [info setValue:[NSMutableArray arrayWithArray:filtered] forKey:@"data"]; 

     NSLog(@"\nFiltered Array:->\n%@",info); 
    }]; 

, кстати, спасибо так много ребят за внимание на мой вопрос.

Смежные вопросы