gpt4 book ai didi

iphone - 如何计算字典中的重复对象?

转载 作者:行者123 更新时间:2023-11-28 20:27:35 25 4
gpt4 key购买 nike

我有一个包含重复对象的字典对象数组,我需要用另一个键创建另一个没有重复对象的数组,该键表示该对象被重复的次数。

例子:

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);
}
}

我正在尝试对对象进行计数并将它们复制到一个新数组,我不确定我是否朝着正确的方向前进,抱歉我的英语不好,请不要投反对票,只要问我我是什么永远在线。

提前致谢!

最佳答案

创建一个 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
* )
*/

关于iphone - 如何计算字典中的重复对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13453492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com