我有一个带有重复对象的字典对象数组,我需要创建另一个没有重复对象的数组,另一个键表示该对象重复的次数。
示例:
object A (key1, key2)
object B (key1, key2)
object C (key1, key2)
object B (key1, key2)
object B (key1, key2)
结果,使用新词典数组:
object A (key1, key2, count(1))
object B (key1, key2, count(3))
object C (key1, key2, count(1))
我很难过NSDictionary
个新对象,到目前为止的代码:
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 :(得分: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
* )
*/