Search code examples
iosobjective-cnsarraynsdictionary

Sort NSArray of NSDictionary using value


I have an NSArray of NSDictionaries. In the NSDictionary I have an element called 'rowID' which is saved as an NSString. However, everything saved in it is a number even though they saved as a string.

I would like to know how to sort the array based on this value but in terms of sorting 1-100. Currently, when I sort it 10 comes first when it should be 1-10.

This is how I am sorting:

NSArray *tempSortedItemsArray = [itemArray sortedArrayUsingDescriptors:
                                     @[[NSSortDescriptor
                                        sortDescriptorWithKey:@"rowID" ascending:YES]]];

Solution

  • Try this :-

    NSArray *aSortedArray = [itemArray sortedArrayUsingComparator:^(NSMutableDictionary *obj1,NSMutableDictionary *obj2) {
        NSString *num1 =[obj1 objectForKey:@"rowID"];
        NSString *num2 =[obj2 objectForKey:@"rowID"];
        return (NSComparisonResult) [num1 compare:num2 options:(NSNumericSearch)];
    }];