16

I have a NSMutableArray containing NSStrings of various lengths. How would I go about sorting the array by the string length?

alecail
  • 3,993
  • 4
  • 33
  • 52
henryeverett
  • 813
  • 5
  • 21

2 Answers2

33

See my answer to sorting arrays with custom objects:

NSSortDescriptor *sortDesc= [[NSSortDescriptor alloc] initWithKey:@"length" ascending:YES];

[myArray sortUsingDescriptors:@[sortDesc]];
Guntis Treulands
  • 4,764
  • 2
  • 50
  • 72
Georg Schölly
  • 124,188
  • 49
  • 220
  • 267
5

This is how I did it (love me some blocks!)

_objects = [matchingWords sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
        NSNumber *alength = [NSNumber numberWithInt:((NSString*)a).length];
        NSNumber *blength = [NSNumber numberWithInt:((NSString*)b).length];
        return [alength compare:blength];
    }];
Kudit
  • 4,212
  • 2
  • 26
  • 32