使用包含Numbers的字符串对数组进行排序

use*_*377 6 arrays xcode objective-c

可能重复:
对NSString值进行排序,就像NSInteger使用NSSortDescriptor一样

我有一个我用NSMutableDictionary填充的数组..我使用这个:

myArray =[[myDict allKeys]sortedArrayUsingSelector:@selector(IDONTKNOW:)];
Run Code Online (Sandbox Code Playgroud)

AllDicts的AllKeys是NSStrings ...比如123.423或423.343 ......我需要用增量数字对新的myArray进行排序.. 12.234 45.3343 522.533 5432.66等等

必须在@selector中插入什么来正确执行此操作?谢谢

Joe*_*Joe 20

您可以使用an NSSortDescriptor和pass doubleValue作为键.

//sfloats would be your [myDict allKeys]
NSArray *sfloats = @[ @"192.5235", @"235.4362", @"3.235", @"500.235", @"219.72" ];
NSArray *myArray = [sfloats sortedArrayUsingDescriptors:
                    @[[NSSortDescriptor sortDescriptorWithKey:@"doubleValue" 
                                                    ascending:YES]]];

NSLog(@"Sorted: %@", myArray);
Run Code Online (Sandbox Code Playgroud)


bbu*_*bum 5

你不能直接使用sortedArrayUsingSelector:.sortedArrayUsingComparator:自己使用并实现比较块.

有点像这样q/a:

更改 - [NSArray sortedArrayUsingComparator:]的排序顺序

(事实上,这个问题的代码可能可以复制/粘贴到你的代码,它会"只是工作",一旦你从改变integerValuedoubleValue四个转换字符串到数字电话):

NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {
    double n1 = [obj1 doubleValue];
    double n2 = [obj2 doubleValue];
    if (n1 > n2) {
        return (NSComparisonResult)NSOrderedDescending;
    }

    if (n1 < n2) {
        return (NSComparisonResult)NSOrderedAscending;
    }

    return (NSComparisonResult)NSOrderedSame;
}];
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

6410 次

最近记录:

13 年 前