如何在NSCountedSet中将对象计数设置为零(或某个值)?

时间:2012-05-28 13:02:04

标签: objective-c cocoa nsset nsmutableset nscountedset

我关注NSCountedSet

<NSCountedSet: 0x53dfc0> (item1 [2000], item2 [9000], item3 [200], item4  [3000])

现在我要从我的设置中删除item1个对象 一个解决方案是

while([mySet countForObject:item1])
 [mySet removeObject:item1];

输出:

<NSCountedSet: 0x53dfc0> (item2 [9000], item3 [200], item4  [3000])

或者我想从我的设置中删除只有1000 item1个对象。

    NSUInteger count = [mySet countForObject:item1];
    while(count)
    {
     [mySet removeObject:item1];
     --count;
    }

输出:

<NSCountedSet: 0x53dfc0> (item1 [1000], item2 [9000], item3 [200], item4  [3000])

有没有更好的解决方案?

3 个答案:

答案 0 :(得分:2)

您可以使用谓词

进行过滤
[mySet filterUsingPredicate:[NSPredicate predicateWithFormat:@"self != %@", item1]];

答案 1 :(得分:0)

我认为你不明白这个问题,所以我得到了这些结果:

<NSCountedSet: 0x6d9ee40> (two [1], three [1], one [1], four [1])

[mySet removeObject:@"one"];

<NSCountedSet: 0x6d9ee40> (two [1], three [1], four [1])

答案 2 :(得分:0)

NSCountedSet不提供将某个对象的计数修改一定数量的方法(实在可惜)。

如果速度不是问题,您可以使用上述方法。但是,如果您需要其他内容:子类化NSMutableSet以提供此“计数”功能可能是您的最佳选择。