在iOS中对包含字母数字单词的数组进行排序

Fra*_*s F 9 sorting iphone objective-c nssortdescriptor ios

我有一个包含10个元素的数组,这些元素称为产品,默认排序,这是当前的日志.

for (int i=0;i<products.count; i++)
{
     NSLog(@"%@",products[i]);
}
Run Code Online (Sandbox Code Playgroud)

输出:

Product1
Product10
Product2
Product3
Product4
Product5
Product6
Product7
Product8
Product9
Run Code Online (Sandbox Code Playgroud)

我需要按以下顺序对其进行排序:

Product1
Product2
Product3
Product4
Product5
Product6
Product7
Product8
Product9
Product10
Run Code Online (Sandbox Code Playgroud)

我目前的方法是扫描数字并根据它进行排序,我想知道在iOS中是否有任何其他方法或默认方法可以做到这一点,或者我是否必须坚持使用我当前扫描每个元素中的数字的方法然后排序?

Dil*_*lip 17

您可以使用此代码对数组进行排序.使用NSNumericSearch搜索字符串中的数值.

NSArray * products = [[NSArray alloc] initWithObjects:@"Product1",
                                                      @"Product10",
                                                      @"Product2",
                                                      @"Product3",
                                                      @"Product4",
                                                      @"Product5",
                                                      @"Product6",
                                                      @"Product7",
                                                      @"Product8",
                                                      @"Product9",
                                                      nil];

products = [products sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
    }];

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

并显示日志:

products : (
    Product1,
    Product2,
    Product3,
    Product4,
    Product5,
    Product6,
    Product7,
    Product8,
    Product9,
    Product10
)
Run Code Online (Sandbox Code Playgroud)