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

我有一个名为产品的10个元素的数组默认sorting,这是当前日志。

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

输出:

 Product1 Product10 Product2 Product3 Product4 Product5 Product6 Product7 Product8 Product9 

我需要按以下顺序sorting:

 Product1 Product2 Product3 Product4 Product5 Product6 Product7 Product8 Product9 Product10 

我目前的方法是扫描出来的数字和sorting的基础上,我想知道是否有任何其他方式或默认方法在iOS中这样做,或者我应该坚持我目前的方法扫描每个元素中的数字然后sorting

您可以使用此代码对数组进行sorting。 使用NSNumericSearchsearchstring中的数字值。

 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 ) 
 NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc]initWithKey:@"YourKeyName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]; self.products = [[self.products sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sortDesc, nil]] mutableCopy]; 

更多详细信息Apple文档