2012-06-03 35 views
1

這是我的代碼從一個NSArray中的一部分:計數OCCURENCES

2012-06-03 16:03:45.140 test[4178:f803] data (
     { 
     receiver = david; 
     sender = james; 
     idMessage = 248; 

    }, 
     { 
     receiver = david; 
     sender = james; 
     idMessage = 247; 

    }, 
     { 
     receiver = david; 
     sender = Marc; 
     idMessage = 246; 

    } 

) 

我想通過發送者發送的消息數到接收器或類似的東西

james = 2; 
marc = 1; 

THX爲閱讀

回答

1

data」是NSArray,它似乎包含NSDictionary對象。

所以,你會通過數組要循環是這樣的:

NSNumber * countOfSender; 
NSString * nameOfSender; 
NSMutableDictionary * countDictionary = [[NSMutableDictionary alloc] initWithCapacity: 1]; 

// go through the original array to examine each sender 
for(NSDictionary *anEntry in data) 
{ 
    nameOfSender = [anEntry objectForKey: @"sender"]; 
    if(sender) 
    { 
     countOfSender = [countDictionary objectForKey: nameOfSender]; 
     if(countOfSender == NULL) 
     { 
      // create a new count entry for this particular sender 
      countOfSender = [NSNumber numberWithInt: 1]; 
     } else { 
      // increment the previous count 
      countOfSender = [NSNumber numberWithInt: [countOfSender intValue] + 1]; 
     } 
     [countDictionary setObject: countOfSender forKey: nameOfSender]; 
    } 
} 

// now print out the outputs 
for(nameOfSender in [countDictionary allKeys]) 
{ 
    countOfSender = [countDictionary objectForKey: nameOfSender]; 
    NSLog(@"%@ : %d" nameOfSender, [countOfSender intValue]); 
} 
+0

它完美的thx – XcodeMania

0

你會做這樣的事情..

NSMutableArray *array = [NSMutableArray array]; 
for(id object in yourArray) { 

    NSLog("sender:%@ id:%i",[object valueForKey:@"sender"],[[object valueForKey:@"idMessage"] intValue]); 

    NSMutableDictionary *dict = [ 
    NSMutableDictionary dictionary]; 
    [dict setValue:[object valueForKey:@"sender"] forKey:@"sender"]; 
    [dict setValue:[NSNumber numberWithInt:[[object valueForKey:@"idMessage"] intValue]] forKey:@"idMessage"]; 

    [array addObject:dict]; 
} 

NSLog(@"%@",array); 
+0

如果是這樣的回答您的解決方案,請檢查它作爲如此。希望它有幫助.. – skram