我想使用NSSortDescriptor对数组进行排序

Pra*_*... 71 sorting iphone jquery-ui-sortable nsarray

我在排序数组wrt数据库时遇到问题:

NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"w" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject: sorter]; 

[mGlossaryArray sortUsingDescriptors:sortDescriptors]; 
[sorter release];
Run Code Online (Sandbox Code Playgroud)

在数据库中有一些第一个大写字母,因为大写字母它没有显示我正确的排序输出.这里我用rt"w"排序一个数组,这是我在数据库中的表列.在这里,我附加了输出的屏幕截图,其中"癌症"首先出现在"c"之后,但这不正确,因为大写单词而没有按字母顺序排序.

例如.如果小写中有"able"和"aCid"那么它将首先显示aCid然后能够显示aCid,并且还存在如果第一个字母是大写字母它首先出现的情况,例如"Able"和"a".在这里Able首先显示.在此输入图像描述

Hob*_*ige 168

看一下: 创建和使用排序描述符

您可以比较不区分大小写.

NSSortDescriptor *sorter = [[[NSSortDescriptor alloc]
          initWithKey:@"w"
          ascending:YES
          selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject: sorter];
[mGlossaryArray sortUsingDescriptors:sortDescriptors]; 
Run Code Online (Sandbox Code Playgroud)

  • 完美答案."localizedCaseInsensitiveCompare"确保以外来字符开头的字符串(例如法语e-acute)也会在列表中正确排序,并且还可以很好地处理大写/小写. (2认同)

Pra*_*ash 39

只是像我使用的那样使用NSSortDescriptor,它运行正常.

   NSSortDescriptor * sortByRank = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
Run Code Online (Sandbox Code Playgroud)


Chr*_*nle 5

我建议使用-localizedStandardCompare:(NSString)?

"只要文件名或其他字符串出现在类似Finder的排序合适的列表和表格中,就应该使用此方法.此方法的精确排序行为在不同的语言环境下有所不同,并且可能在将来的版本中进行更改."