2

I have following NSCountedSet

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

Now i want to remove item1 object from my set.
one solution is

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

Output:

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

or i want to remove only 1000 item1 object from my set.

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

Output:

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

is there any better solution for this ?

4

3 回答 3

2

您可以使用谓词进行过滤

[mySet filterUsingPredicate:[NSPredicate predicateWithFormat:@"self != %@", item1]];
于 2012-05-28T13:23:44.833 回答
0

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

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

[mySet removeObject:@"one"];

<NSCountedSet: 0x6d9ee40> (two [1], three [1], four [1])
于 2012-05-28T13:21:42.113 回答
0

NSCountedSet 不提供将某个对象的计数修改一定数量的方法(真的很遗憾)。

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

于 2012-05-28T17:51:47.037 回答