[英]How to get Unique NSDictionary from NSArray of NSDictionary
我在 iOS 9 上使用 Objective C。
我想從NSDictionaries
的NSArray
獲取 Unique NSDictionary
。
我有N
個NSDictionaries
,如下所示(例如):
staff Description Price
***** *********** *****
01 'some string' 9.99
05 'some string' 8.80
01 'some string' 7.45
01 'some string' 4.21
如何從這些中實現我的目標?
唯一的參數是staff
。
我想為每個獲得 Unique 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}
],
];
}
這個問題可能看起來像是this 的一個可能重復,但有一個區別,我不希望以任何方式對數據進行排序。 其次,我想要鍵-> staff
相似的那些字典的數組。
感謝'T先生'提供此鏈接。
深入研究該鏈接后,我設法實現了我的目標
//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);
}];
順便說一下,非常感謝你們關注我的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.