在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文档
- 使用clang / LLVM通过LDFLAGS链接.dylib
- C ++,OpenCV和跨平台GPU编程的“什么”
- 如何在Swift中使用扩展协议公开obj-C类的现有属性
- Swift编译器错误:“Double”不能转换为CGFloat
- iOS应用程序中的SQLite C函数导致EXC_BAD_ACCESS
- 在webview或MPMoviePlayerViewController的iOSstreamvideo
- 取代自我> isa是因为Xcode 4.6的弃用
- Xcode 4 / iOS – 从我的应用程序内使用SMTP发送电子邮件
- 在iOS 7上使用AVSpeechSynthesizer,但保留iOS 6的兼容性