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

Objective c 如何在NSCountedSet中将对象计数设置为零(或某个值)?,objective-c,cocoa,nsset,nsmutableset,nscountedset,Objective C,Cocoa,Nsset,Nsmutableset,Nscountedset,我有以下NSCountedSet <NSCountedSet: 0x53dfc0> (item1 [2000], item2 [9000], item3 [200], item4 [3000]) 输出: <NSCountedSet: 0x53dfc0> (item2 [9000], item3 [200], item4 [3000]) <NSCountedSet: 0x53dfc0> (item1 [1000], item2 [9000], item3

我有以下
NSCountedSet

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

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

<NSCountedSet: 0x53dfc0> (item2 [9000], item3 [200], item4  [3000])
<NSCountedSet: 0x53dfc0> (item1 [1000], item2 [9000], item3 [200], item4  [3000])
(第1项[1000],第2项[9000],第3项[200],第4项[3000])

有更好的解决方法吗?

我认为您不理解这个问题,因此我得到以下结果:

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

[mySet removeObject:@"one"];

<NSCountedSet: 0x6d9ee40> (two [1], three [1], four [1])
(两[1],三[1],一[1],四[1])
[mySet removeObject:@“一个”];
(二[1],三[1],四[1])

您可以使用谓词进行筛选

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

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


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

如果您知道对象“item1”,则可以直接调用“removeObject”,而无需在mySet上进行循环。@WhiteTiger减少与NSCountedSet关联的计数。Stick
[mySet addObject:@“one”]
在您的
移除对象之前:
若要查看此操作不起作用…@WhiteTiger您的集合只包含一个[1](计数为1),我有item1[2000](计数为2000)。我没有意识到您可能有重复的可能性items@WhiteTiger:这就是计数集的用途:它告诉您每个项目中有多少项。其他类型的集合不允许重复;每个项目要么在非计数集中,要么不在计数集中。有没有办法减少对象的计数?听起来你需要制作自己的对象,它可以在幕后使用NSMutableSet,但可以为你提供所需的附加行为。。。