2013-11-24 37 views
0

我有一段代碼,哪些訂單分的一個NSMutableArray的數組,如下所示:錯誤在一個項目中使用NSComparisonResult時進行排序CGPoints

[points sortUsingComparator:^NSComparisonResult (id firstObject, id secondObject) 
{ 
    CGPoint firstPoint = [firstObject CGPointValue]; 
    CGPoint secondPoint = [secondObject CGPointValue]; 
    return firstPoint.y>secondPoint.y; 
}]; 

這工作得很好,我的第一個項目。然後我嘗試在另一個項目中使用它,在那裏我基本上覆制了我的整個班級(用於分解成單獨的演示項目)。在第二個項目,Xcode的構建失敗,錯誤:

Cannot initialize return object of type 'NSComparisonResult' with an rvalue of type 'bool'.

奇怪的是,它會編譯,如果我把代碼在不同的類中的新項目中,但我們從未在我原來的班,「Classname.mm 」。 .mm與原始項目中的相同,並且包含所有相同的標題和變量。

這兩個項目都是針對Xcode 5.0.1上的iOS 7.0編譯的。

有沒有人有任何想法,爲什麼只有在我的新項目,這將發生在一個類?

由於

回答

4

塊需要返回NSComparisonResult類型的值。你沒有這樣做。

嘗試:

[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; 
    } 
}]; 

我可能有 「上升/下降」 值落後。如果以相反的順序得到結果,交換這兩個返回值。

+0

謝謝rmaddy。這消除了編譯器錯誤。不過有趣的是,在我的其他項目中並不需要它。我真的很想知道爲什麼它可以在一個項目中工作,而不是另一個(看起來)完全一樣......因此,在我之前的項目中,我能夠進行比較並相應地返回正確的值。 – wickets

相關問題