NSCountedSet - get the number of elements in a set

I have an array of information with several names that I want to combine and count, and then go to the table view that you will see in the message application.

I got to that. Where can I register and see what I want, but I just can’t find a solution that pulls this information from the set and puts it in a tableview, respectively.

Example

- (void)directMessagesReceived:(NSArray *)messages forRequest:(NSString *)connectionIdentifier{ for(NSDictionary *d in messages) { // NSLog(@"See Direct Messageges Parsing Info: %@", d); Tweet *tweetDic = [[Tweet alloc] initWithTweetDictionary:d]; //[directMessages addObject:tweetDic]; [tweetDic autorelease]; } //[arayToScan addObject:[messages valueForKey:@"sender_screen_name"]]; [arayToScan addObjectsFromArray:messages]; [self checkForDuplicateIDs]; // NSLog(@"Same ScreenName Received: %@", arayToScan); //[self.mainTableView reloadData]; NSLog(@"DM COUNT = %i",[directMessages count]); [DSBezelActivityView removeViewAnimated:YES]; } - (NSSet *)checkForDuplicateIDs { //CHECK FOR DUPLICATES IN ARRAY NSArray *allIDs = [arayToScan valueForKeyPath:@"sender_screen_name"]; NSArray *sortedIDs = [allIDs sortedArrayUsingSelector:@selector(compare:)]; NSString *previousID = nil; duplicateIDs = [NSMutableSet set]; for (NSString *anID in sortedIDs) { if ([previousID isEqualToString:anID]) { [duplicateIDs addObject:anID]; } previousID = anID; } //THEN REMOVE ANY DUPLICATES IN NEW ARRAY NSCountedSet *countedSet = [NSCountedSet setWithArray:sortedIDs]; NSMutableArray *oneMess = [NSMutableArray arrayWithCapacity:[sortedIDs count]]; NSMutableArray *multipleMess = [NSMutableArray arrayWithCapacity:[sortedIDs count]]; for(id obj in countedSet) { if([countedSet countForObject:obj] == 1) { [oneMess addObject:obj]; } for(id duplicatenames in countedSet) { if ([countedSet countForObject:duplicatenames]>1) { [multipleMess addObject:duplicatenames]; [countedSet countForObject:duplicatenames]; } } } //NSLog(@"NSCountedSet = %@",[countedSet allObjects]); //NSLog(@"NSCountedSet = %@",countedSet); //NSLog(@"One Message = %@",oneMess); // NSLog(@"Multiple Messages = %@",multipleMess); //HERE I HAVE ORIGINAL ARRAY IN ALBETICAL ORDER // NSLog(@"Messages Containing more then 1 = %@",sortedIDs); //HERE I HAVE DUPLICATES IN ALBETICAL ORDER // NSLog(@"Messages Containing more then 1 = %@",duplicateIDs); //HERE I HAVE THE MESSAGES ONLY CONTAING 1 //NSLog(@"Messages Containing only 1 = %@",oneMess); //NOW I WANT TO COUNT THE DUPLICATES TO PLACE AS A STRING IN CELL FOR # OF MESSAGES & # OF ROW IN TBLVIEW //NSLog(@"Duplicates count = %i",[duplicateIDs count]); // NSLog(@"Messages Containing only count = %i",[oneMess count]); //HERE I WOULD ADD BOTH ARRAYS AND SEND TO MY ARRAY BELOW WHICH IS USED FOR MY TBLVIEW THIS INFO IS RETRIEVABLE WHAT I NEED IS THE # OF EACH DUPLICATE AS SEEN //ARRAY *NEWARRAY INIT WITH OBJECTS ,ONEMESS, MULTIPLEMESS, //ARRAY CUSTOM # OF EACH MULTIPLE MESSAGE TO SHOW IN TBLVIEW??? //THEN I CAN CONTINUE WITH THE BELOW METHOD TO RELOD THE TABLEVIEW //[directMessages addObject:NEWARRAY]; //[self.mainTableView reloadData]; return [[duplicateIDs copy] autorelease]; } 

This is a magazine ... it happens as many times as it is counted, but I just registered it to find out if it works, what it is. Any help would be greatly appreciated.

 Counted = <NSCountedSet: 0x6d8cb80> (Nkapoor124 [33], iphonetechtips [3], jima6636 [4], pro1995 [2], iphone266 [2], eenofonn [1], iphoneMaster323 [3], FreeAppl3 [2], Bababooey13 [7], _CL1CK_ [5], _ToyVan_ [4], Nucleiosis [26], dracossaint [6], AlexInHouston [1], FlybriTn [7], iOSGraphix [1], deckedsg [5], 19est80 [3], JHackstar [2], barsoverbeats [7], anonomys209 [5], 87whitestallion [1], bAdGigabit [55], Sgt_Impacto [3], Nazaroth [2], K_Nitsua [1], MannyIphone [6], iphoneman76 [3]) 
+6
source share
1 answer

In your clarification, you asked for the amount (number?) Of each duplicate. You can get to the account below. If you are looking for the number of times each of which is duplicated (instead of the total number of each), then this number is 1 for each. If it is calculated - 1 is 0, there are no duplicates.

I think you are looking for the NCPountedSet countForObject method.

Example below ...

  NSArray *names = [NSArray arrayWithObjects:@"John", @"Jane", @"John", nil]; NSCountedSet *set = [[NSCountedSet alloc] initWithArray:names]; for (id item in set) { NSLog(@"Name=%@, Count=%lu", item, (unsigned long)[set countForObject:item]); } 

It will display:

 2011-09-30 01:00:50.665 Craplet[7854:707] Name=Jane, Count=1 2011-09-30 01:00:50.679 Craplet[7854:707] Name=John, Count=2 
+26
source

Source: https://habr.com/ru/post/898338/


All Articles