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

对iOS中包含字母数字字的数组进行排序,ios,iphone,objective-c,sorting,nssortdescriptor,Ios,Iphone,Objective C,Sorting,Nssortdescriptor,我有一个包含10个元素的数组,叫做products,默认情况下是排序的,这是当前的日志 for (int i=0;i<products.count; i++) { NSLog(@"%@",products[i]); } 我需要按以下顺序对其进行排序: Product1 Product2 Product3 Product4 Product5 Product6 Product7 Product8 Product9 Product10 我目前的方法是扫描出数字并基于此进行排序,我想

我有一个包含10个元素的数组,叫做products,默认情况下是排序的,这是当前的日志

for (int i=0;i<products.count; i++)
{
     NSLog(@"%@",products[i]);
}
我需要按以下顺序对其进行排序:

Product1
Product2
Product3
Product4
Product5
Product6
Product7
Product8
Product9
Product10

我目前的方法是扫描出数字并基于此进行排序,我想知道在iOS中是否有其他方法或默认方法可以做到这一点,或者我应该坚持我目前的方法,扫描每个元素中的数字,然后进行排序???

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

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);
和日志显示:

products : (
    Product1,
    Product2,
    Product3,
    Product4,
    Product5,
    Product6,
    Product7,
    Product8,
    Product9,
    Product10
)

有关更多详细信息,您可以更改产品模块以包含int属性,而不是在创建产品对象时设置int值。之后,只需使用此值进行排序。这是不正确的。你检查过你的代码吗?返回产品==(产品1、产品10、产品2、产品3、产品4、产品5、产品6、产品7、产品8、产品9)是的,我在发布我的答案之前检查过。当时它返回的值正确吗?这叫做聪明的回答。。thanks@i_Looser谢谢……:)使用
NSNumericSearch | nscaseinsensitivisearch
应该确保大写字母也不会影响排序
products : (
    Product1,
    Product2,
    Product3,
    Product4,
    Product5,
    Product6,
    Product7,
    Product8,
    Product9,
    Product10
)
NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc]initWithKey:@"YourKeyName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];


self.products = [[self.products sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sortDesc, nil]] mutableCopy];