J'ai quelques objets qui ont 3 options de tri: qualité, quatité et comparaison avec l'autre objet, triés par cet ordre.Tri des tableaux avec des comparaisons cycliques (boucle infinie?)
- (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;
}
Mon problème est que, la betterthan: méthode peut provoquer un cyclique comparer si les objets ont la même qualité et la quantité, et je veux retourner un ordre de tri dans ce cas.
Par exemple, A, B et C ont la même qualité/quantité, mais
A betterThan: B => YES
B betterThan: C => YES
C betterThan: A => YES
Solutions? Merci.
Oui, vous avez raison, j'ai écrit ce code rapidement. J'ai corrigé cela :) Mais, en supprimant tous les autres compare et colle avec le better Than: comme mon seul comparer, tout ce que j'ai obtenu est écrasé, car il n'arrêtera pas le tri, je crois. Je ne reçois aucune sortie du débogueur, donc je ne peux pas vraiment dire. –