在IOS中使用NSSortDescriptorsorting数组(NSString +数字)?

我想使用NSSortDescriptor对数组进行NSSortDescriptor

这是我的代码

  NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"filename" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]; [arrDocuments sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]]; 

我得到的是这个不正确的结果。

  1. 新build文件夹1
  2. 新build文件夹11
  3. 新build文件夹12
  4. 新build文件夹2

预期

  1. 新build文件夹1
  2. 新build文件夹2
  3. 新build文件夹11
  4. 新build文件夹12

localizedCaseInsensitiveCompare:函数是一个字母search。

你会更好地使用像…

 compare:options: 

与选项NSNumericSearch这对待任何数字作为数字,所以sorting他们NSNumericSearch等…

按字母顺序排列虽然10之前2因此你的问题。

整个代码看起来像…

 NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:@"fileName" ascending:YES comparator:^(NSString *obj1, NSString *obj2) { return [obj1 compare:obj2 options:NSNumericSearch | NSCaseInsensitiveSearch]; }]; [arrDocuments sortUsingDescriptors:@[sd]];