Voici le code que j'utilise pour trier les éléments dans un NSMutableArray. Le code fonctionne sans erreur mais après l'application du filtre, la commande ne change pas. Est-ce que je fais quelque chose de mal?Le tri de NSMutableArray ne modifie pas l'ordre des objets
NSArray *filtered = [posts sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
Post *post1 = (Post *)obj1;
Post *post2 = (Post *)obj2;
int p1 = post1.firstPhotoVoters.count + post1.firstPhotoVoters.count;
int p2 = post2.firstPhotoVoters.count + post2.firstPhotoVoters.count;
if (p1 < p2) return (NSComparisonResult)NSOrderedAscending;
if (p1 > p2) return (NSComparisonResult)NSOrderedDescending;
return (NSComparisonResult)NSOrderedSame;
}];
"la commande ne change pas" - vérifiez-vous l'ordre de 'posts' ou' filtered'? – Kreiri
Les moulages 'NSComparisonResult' sont complètement inutiles. De plus, vos variables 'p1' et' p2' sont étranges, puisqu'elles ne prennent que le double du nombre (et elles devraient être 'NSUInteger'). Le tri par double valeur équivaut à trier juste par valeur. – Sulthan
Vérifiez-vous l'ordre de 'filtered' ou' posts'? Le retour 'NSOrderedSame' est-il toujours atteint lorsque le bloc est exécuté? – CodaFi