iPhone如何获取阵列中唯一项目的运行记录?

时间:2011-04-23 23:47:13

标签: iphone count nsarray counter

假设我有一个充满动物对象的NSArray,它们的名字是字符串属性。 当我遍历数组时,我如何获得类似名称的运行记录?

猫 - 鲍勃数:1

狗 - 莎莉伯爵:1

猫 - 鲍勃数:2

兔子 - 鲍勃数:3

鱼 - 莎莉伯爵:2

如果名称是动态的,而不是静态的,我将如何得到这些整数?

2 个答案:

答案 0 :(得分:1)

最直接的方法是使用NSMutableDictionary。对于每个名称,尝试从字典中获取该名称的NSNumber。如果找到一个,添加1并将其存回;如果没有,请创建一个值为1的新值并存储它。

答案 1 :(得分:0)

我猜你可以使用NSMutableDictionary来保存名字的数量。

类似的东西:

NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithCapacity:10];

NSString *name = [NSString stringWithFormat:@"Bob"];    
NSNumber *number = (NSNumber *)[dic objectForKey:name];

if (number == nil) // There is no occurrence of the name in Dictionary
{
    number = [NSNumber numberWithInt:1];
    [dic setObject:number forKey:name];
}
else // There is already an occurrence of the name in dictionary, so increment counter
{
    number = [NSNumber numberWithInt:(number.intValue + 1)]; // Increments counter for Name
    [dic objectForKey:name];
}

“NSNumber * number =(NSNumber *)[dic objectForKey:name]”行检索特定名称出现的次数。

你也可以使用[dic allKeys];检索该词典中的所有名称。