尝试使用containsObject在NSArrayMutableArray中查找不同的值

时间:2013-11-13 01:31:43

标签: objective-c nsmutablearray nsarray parse-platform

我正在使用Parse.com作为我正在开发的应用程序的后端。 Parse.com无法通过PFQuery返回唯一结果。我正在做的是检索用户的所有高尔夫轮次的PFQuery,然后尝试确定用户已经玩过的独特课程。独特的课程应具有以下属性的独特组合:

  • 课程名称
  • 球场T恤(发球的颜色)
  • 课程评分
  • 课程坡度

这是我的代码:

 PFQuery *courseQuery = [PFQuery queryWithClassName:@"Rounds"];
    [courseQuery selectKeys:@[@"roundUser",@"roundCourse",@"roundTee", @"roundRating",@"roundSlope",]];
    [courseQuery whereKey:@"roundUser" equalTo:[PFUser currentUser].username];
    [courseQuery findObjectsInBackgroundWithBlock:^(NSArray *courseObjects,NSError *error){
        if(!error)
        {
            NSMutableArray* coursesFromParseNonUnique=[courseObjects mutableCopy];
            NSMutableArray *coursesFromParseUnique=[[NSMutableArray alloc]init];

            int x;
            for (x=1;x<=courseObjects.count;x++)
            {
                NSObject *currentObject = [coursesFromParseNonUnique lastObject];
                NSLog(@"Object %d : %@",x,currentObject);
                if (![coursesFromParseUnique containsObject:currentObject])
                {
                    [coursesFromParseUnique addObject:currentObject];
                }
                [coursesFromParseNonUnique removeLastObject];
            }

        }
        else NSLog(@"failed");
    }

关于为什么没有根据上述4个特征返回一套独特课程的想法?

1 个答案:

答案 0 :(得分:3)

您的结果看起来PFObject未实现isEqual:,因此从NSObject获取默认实现 - 这是一个身份(一个对象等于它自己,没有别的)。

谷歌出现this,支持这一理论。

您可以采用与该引用相同的方法:使用类别添加isEqual:hash,使您的方法比较四个属性的相等性。

如果你被困isEqual:&amp; hash按照上面参考文献中的Mike Ash链接。

HTH。