NSDictionary sort by keys as floats

前端 未结 3 605
一向
一向 2021-02-03 11:00

basically I have an NSDictionary with keys and values.

The keys are all numbers, but at the moment they are strings.

I want to be able to compare them as numbers

3条回答
  •  面向向阳花
    2021-02-03 11:20

    Not sure what you are up to – dictionaries are inherently unsorted, there is no stable key ordering in the default implementation. If you want to walk the values by sorted keys, you can do something like this:

    NSInteger floatSort(id num1, id num2, void *context)
    {
        float v1 = [num1 floatValue];
        float v2 = [num2 floatValue];
        if (v1 < v2)
            return NSOrderedAscending;
        else if (v1 > v2)
            return NSOrderedDescending;
        else
            return NSOrderedSame;
    }
    
    NSArray *allKeys = [aDictionary allKeys];
    NSArray *sortedKeys = [allKeys sortedArrayUsingFunction:floatSort context:NULL];
    for (id key in sortedKeys)
        id val = [aDictionary objectForKey:key];
        …
    

提交回复
热议问题