2012-11-19 40 views
0

我有一個重複對象的字典對象數組,我需要使用另一個表示對象重複次數的關鍵字創建另一個沒有重複對象的數組。如何統計字典中的重複對象?

實施例:

object A (key1, key2) 
object B (key1, key2) 
object C (key1, key2) 
object B (key1, key2) 
object B (key1, key2) 

結果,與新的字典陣列:具有因爲即時通訊新一時間難以NSDictionary目的,到目前爲止的代碼

object A (key1, key2, count(1)) 
object B (key1, key2, count(3)) 
object C (key1, key2, count(1)) 

林:

for(int j = 1; j < [objects count]; j++) 
{ 
    for(int k = j+1;k < [objects count]-j;k++) 
    { 
     NSMutableDictionary *item1 = [objects objectAtIndex:j]; 
     NSMutableDictionary *item2 = [objects objectAtIndex:k]; 

     NSString *str1 = [item1 valueForKey:@"setArrivalAirportOrCode"]; 
     NSString *str2 = [item2 valueForKey:@"setArrivalAirportOrCode"]; 

     NSLog(@"%@==%@ ???",str1,str2); 
     if([str1 isEqualToString:str2]) 
      NSLog(@"%@==%@",str1,str2); 
    } 
} 

我試圖計數對象並將它們複製到一個新的數組,我不知道如果我要在正確的方向,爲我可憐的英語感到抱歉,請不要投票,只問我任何我總是在線。

在此先感謝!

+0

如何'對象C(key1 ,key2,count(3))'count is 3 ????? – Venkat

+0

我想你想要:對象B(key1,key2,count(3))。是嗎? – iDilip

+0

在所有詞典中鍵都一樣嗎? –

回答

3

創建一個NSCountedSet它會照顧你的計數。

在這個例子中,我用NSString對象,但它可以與任何類型的對象來完成:

NSString  *stringA = @"stringA"; 
NSString  *stringB = @"stringB"; 
NSString  *stringC = @"stringC"; 
NSArray   *array  = [NSArray arrayWithObjects:stringA, stringB, stringC, stringB, stringB, nil]; 
NSCountedSet *countedSet = [NSCountedSet setWithArray:array]; 

NSLog(@"%@", countedSet); 
// Results: <NSCountedSet: 0x6b35790> (stringA [1], stringB [3], stringC [1]) 

爲了得到計數,可以使用:

NSLog(@"%d", [countedSet countForObject:stringB]); 
// Result: 3 

爲了得到結果在一個單獨的數組(注意,你失去了計數,所以使用計數集),使用:

NSArray *array2 = [countedSet allObjects]; 
NSLog(@"%@", array2); 
/* 
* (
* stringA, 
* stringB, 
* stringC 
*) 
*/ 
+0

感謝您的答案,但這有點模糊,我可以有一個例子與我的問題有關嗎? :) –

+0

添加示例。 :) – lnafziger