我有一些有3個排序選項的對象:質量,數量和與其他對象的比較,按照該順序排序。使用循環比較對數組進行排序(無限循環?)
- (NSComparisonResult) compare: (MyObject *) obj {
if (self.quality > obj.quality)
return NSOrderedAscending;
else if (self.quality < obj.quality)
return NSOrderedDescending;
if (self.quantity > obj.quantity)
return NSOrderedAscending;
else if (self.quantity < obj.quantity)
return NSOrderedDescending;
if ([self betterThan: obj])
return NSOrderedAscending;
if ([obj betterThan: self])
return NSOrderedDescending;
return NSOrderedSame;
}
我的問題是,該betterThan:方法可能會導致循環比較,如果對象具有相同的質量和數量,我想在這種情況下返回任何排序順序。
例如,A,B和C具有相同的質量/數量,但
A betterThan: B => YES
B betterThan: C => YES
C betterThan: A => YES
解?謝謝。
是的,你是對的,我寫這個代碼匆忙。我修正了:) 但是,刪除所有其他比較和堅持以betterThan:作爲我唯一的比較,我一直得到的是墜毀,因爲它不會停止排序,我相信。我沒有從調試器得到任何輸出,所以我不能真正說。 – 2010-02-25 04:04:36