从NSMutableArray中取出对象

时间:2011-12-29 14:59:43

标签: objective-c ios cocoa nsmutablearray

我有一个数组,其中包含一些可能相同但有些不同的对象 如何分别拍摄每个相同的对象和不同的对象?

下面是数组

NSMutableArray *items = [[NSMutableArray alloc]
 initWithArray:[NSArray arrayWithObjects:@"rat", @"rat", @"cat",@"Lion", @"cat", @"dog", @"dog", nil]];

我想要有四个包含这些项目的数组:

  • 第一个有两只大鼠的阵列
  • 第二阵列有两只猫
  • 第一个有一只狮子的阵列
  • 第四阵列有两只狗

将物品拿出来的最佳方法是什么?相同的对象应放在同一个数组中。

1 个答案:

答案 0 :(得分:6)

这是一般答案:

将数组放入NSCountedSet中 - 它将存储每个对象以及添加它的次数。

然后 - 对于此计数集中的每个对象,创建一个数组,该对象根据每个对象的计数重复。

它适用于您的情况,因为您使用的是静态字符串,如果它们是相同的字符串,它们将是相同的。如果您使用自定义对象,这将需要更多工作。

但我们要问的真正问题是为什么你需要创建这些重复的结构。如果我们能够知道你在做什么,我们可以为你提供更好的建议。例如,如果您只需要保持每种类型对象数量的运行计数,您可以直接使用NSCountedSet(它来自NSMutableSet,因此它已经是可变的)并且不需要创建数组。