NSArray排序浮动

时间:2013-08-12 15:35:58

标签: sorting nsarray

我努力不要毫无疑问地提出问题,但这会让我浪费几个小时的时间,现在让我放弃,希望有人可以帮助我。

我根本无法正确地订购包含花车的NSArray,我能得到的最接近的就是这个。

使用以下

填充数组
[combosMasterLength addObject:[NSString stringWithFormat:@"%0.1f", finalL]];

    NSMutableSet* set1 = [NSMutableSet setWithArray:combosMasterLength];//Array Final Length
    NSMutableSet* set2 = [NSMutableSet setWithArray:CombosMasterWidth];//Array Final Width
    [set1 intersectSet:set2]; //this will give me only the objects that are in both sets

    NSArray *combos = [set1 allObjects];//cread my combos array with the unique values
    NSArray* sortedArray = [combos sortedArrayUsingSelector:@selector(compare:)];//my sorting statment not quite working

    NSLog(@"SORTED ARRAY %@",sortedArray);

我从输出中得到的是: -

"1.2",
"1.5",
"12.0",
"2.0",
"2.4",
"3.0",
"4.0",
"6.0"

我知道问题是什么,我只是根本不知道如何对它进行排序,我尝试了参考苹果文档,但它们现在已经超越了我的脑袋,任何人都有任何想法,我将如何排序这样它返回

"1.2",
"1.5",
"2.0",
"2.4",
"3.0",
"4.0",
"6.0"'
"12.0"

先谢谢   H先生

1 个答案:

答案 0 :(得分:0)

由于您似乎想要按数值对NSString进行排序,因此您需要将值转换为数值并与之进行比较。您可以这样做,例如,使用sortedArrayUsingComparator;

NSArray *myArray = [NSArray arrayWithObjects:
 @"1.2", @"1.5", @"12.0", @"2.0",
 @"2.4", @"3.0", @"4.0", @"6.0", nil];

NSArray *sorted = [myArray sortedArrayUsingComparator:
  ^NSComparisonResult(NSString *obj1, NSString *obj2) 
    {
        if ([obj1 doubleValue] > [obj2 doubleValue])
            return NSOrderedDescending;
        else if ([obj1 doubleValue] < [obj2 doubleValue])
            return NSOrderedAscending;
        return NSOrderedSame;         
    }
];

NSLog(@"%@", sorted);

> (
    "1.2",
    "1.5",
    "2.0",
    "2.4",
    "3.0",
    "4.0",
    "6.0",
    "12.0"
  )