sortedArrayUsingComparator int
J'ai un tableau d'un dictionnaire qu'il sortedArrayUsingComparator les trie en fonction de la clé;
listPerc = [listItem sortedArrayUsingComparator: ^(id a, id b) {
NSString *first = [a objectForKey:@"perc"];
NSString *second = [b objectForKey:@"perc"];
return [first compare:second];
le problème est que cette clé est un nombre, et l'ordre est ainsi, par exemple,: 1,10, 15, 17, 2, 23, etc.
il ne calcule pas l'ampleur de la le nombre.
comment puis-je faire?
Vous devez vous connecter pour publier un commentaire.
Faire NSNumber objets et de les comparer à la place. Soit de les stocker comme NSNumbers au départ (méthode préférée) ou de les convertir en comparant (plus lent).
De la conversion d'un NSString à un NSNumber peut être fait avec:
Ne pouvez pas vous retourner le résultat de la comparaison comme ça,
incompatible block pointer types sending 'id(^)(id, id)' to parameter of type 'NSComparator' (aka 'NSComparisonResult (^)(id,id)')
int
etNSComparisonResult
est unNSInteger
qui est unlong
.return (0 < diff) - (diff < 0)
serait mieux, mais le if / else est beaucoup plus lisible à mon humble avis.Une très courte distance de @(Deepak Danduprolu)'s réponse
}
Peut-être vous pouvez faire quelque chose comme cela.
J'ai fait quelque chose qui était un croisement entre le vôtre et le ci-dessus et cela fonctionne: