Ios 使用NSComparisonResult对CGPoints数组排序时在一个项目中出错

Ios 使用NSComparisonResult对CGPoints数组排序时在一个项目中出错,ios,objective-c,nsmutablearray,cgpoint,Ios,Objective C,Nsmutablearray,Cgpoint,我有一段代码,它对NSMutableArray点进行排序,如下所示: [points sortUsingComparator:^NSComparisonResult (id firstObject, id secondObject) { CGPoint firstPoint = [firstObject CGPointValue]; CGPoint secondPoint = [secondObject CGPointValue]; return firstPoin

我有一段代码,它对NSMutableArray点进行排序,如下所示:

[points sortUsingComparator:^NSComparisonResult (id firstObject, id secondObject)
{
     CGPoint firstPoint = [firstObject CGPointValue];
     CGPoint secondPoint = [secondObject CGPointValue];
     return firstPoint.y>secondPoint.y;
}];
这在我的第一个项目中非常有效。然后,我尝试在另一个项目中使用它,在那里我基本上复制了整个类(为了拆分成单独的演示项目)。在第二个项目中,Xcode无法生成,错误如下:

无法使用 类型为“bool”的右值

奇怪的是,如果我将代码放在新项目的另一个类中,而不是放在我的原始类“Classname.mm”中,它就会编译。mm与原始项目中的相同,并且包含所有相同的头和变量

这两个项目都是针对iOS 7.0在Xcode 5.0.1上编译的

有人知道为什么在我的新项目中只有一节课会发生这种情况吗


谢谢

块需要返回类型为
NSComparisonResult
的值。你没有那样做

尝试:

[点排序器:^n比较结果(id firstObject,id secondObject)
{
CGPoint firstPoint=[firstObject CGPointValue];
CGPoint secondPoint=[secondObject CGPointValue];
如果(第一点y>第二点y){
退而求其次;
}else if(第一点y<第二点y){
回报率下降;
}否则{
返回指定名称;
}
}];

我可能有“升序/降序”值。如果以相反的顺序得到结果,则交换这两个返回值。

块需要返回类型为
NSComparisonResult
的值。你没有那样做

尝试:

[点排序器:^n比较结果(id firstObject,id secondObject)
{
CGPoint firstPoint=[firstObject CGPointValue];
CGPoint secondPoint=[secondObject CGPointValue];
如果(第一点y>第二点y){
退而求其次;
}else if(第一点y<第二点y){
回报率下降;
}否则{
返回指定名称;
}
}];

我可能有“升序/降序”值。如果以相反的顺序得到结果,请交换这两个返回值。

谢谢rmaddy。这将删除编译器错误。但有趣的是,我的另一个项目中并不需要它。我真的很好奇为什么它会在一个项目中工作,而不是在另一个(看起来)完全相同的项目中工作。。。因此,在我以前的项目中,我能够进行比较,并相应地返回正确的值。谢谢rmaddy。这将删除编译器错误。但有趣的是,我的另一个项目中并不需要它。我真的很好奇为什么它会在一个项目中工作,而不是在另一个(看起来)完全相同的项目中工作。。。因此,在我以前的项目中,我能够进行比较,它相应地返回正确的值。
[points sortUsingComparator:^NSComparisonResult (id firstObject, id secondObject)
{
     CGPoint firstPoint = [firstObject CGPointValue];
     CGPoint secondPoint = [secondObject CGPointValue];
     if (firstPoint.y > secondPoint.y) {
         return NSOrderedDescending;
     } else if (firstPoint.y < secondPoint.y) {
         return NSOrderedAscending;
     } else {
         return NSOrderedSame;
     }
}];