Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何检测NSArray中有多少相同的对象_Ios_Objective C_Nsarray - Fatal编程技术网

Ios 如何检测NSArray中有多少相同的对象

Ios 如何检测NSArray中有多少相同的对象,ios,objective-c,nsarray,Ios,Objective C,Nsarray,我有一个NSArray,我想知道它有多少个特定的对象 这是我的代码: NSArray *filter = [[NSArray alloc]initWithObjects:@"1",@"2",@"2",@"3",@"2",@"3", nil]; switch (section) { case 0: //check how many 1 object is filter array return //number of 1 object

我有一个NSArray,我想知道它有多少个特定的对象

这是我的代码:

NSArray *filter = [[NSArray alloc]initWithObjects:@"1",@"2",@"2",@"3",@"2",@"3", nil];

switch (section) {
      case 0:
          //check how many 1 object is filter array
          return //number of 1 object
          break;
      case 1:
          //check how many 2 object is filter array
          return //number of 2 object
          break;
      case 2:
          //check how many 3 object is filter array
          return //number of 3 object
          break;
}

请给我指点一下。

听起来你想使用:NSCountedSet

如果您已经拥有阵列,则可以执行以下操作:[NSCountedSet setWithArray:array]

您可以使用NSPredicate:


顺便说一下,在switch内部的return语句之后不需要中断。该方法将返回,因此以下情况无论如何都无法达到。

什么构成重复-是特定对象还是isEqual返回true的不同对象?这仅在同一对象有多个实例时有效。NSCountedSet不考虑等质量。例如,它可以正确地处理问题中显示的字符串文本,但不能处理任意NSString,即使它们包含相同的字符串value@Paulw11:你确定吗?我用两个内容相同的不同字符串进行了测试,得到了一个包含一个对象的计数集,计数=2。
NSCountedSet *filter = [NSCountedSet setWithObjects:@"1",@"2",@"2",@"3",@"2",@"3", nil];
NSLog(@"%@", @([filter countForObject:@"2"])); // Outputs 3
switch (section) {
      case 0:
          NSArray *ones = [filter filteredArrayUsingPredicate:[NSPredicate predicateWithFormat: @"SELF = %@", @"1"]];
         return [ones count];
      case 1:
      //and so on