我怎样才能按照字母顺序sortingNSMutableArray中的string?
我有一个NSMutableArray
中的string列表,我想按字母顺序sorting,然后再显示在我的表格视图中。
我怎样才能做到这一点?
有以下Apple的工作示例,在Collections文档中使用sortedArrayUsingSelector:
和localizedCaseInsensitiveCompare:
:
sortedArray = [anArray sortedArrayUsingSelector: @selector(localizedCaseInsensitiveCompare:)];
请注意,这将返回一个新的sorting数组。 如果你想sorting你的NSMutableArray
,然后使用sortUsingSelector:
而是像这样:
[mutableArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
这是Swift的一个更新的答案:
-
在closures的帮助下,可以在Swift中进行sorting。 有两种方法 –
sort
和sorted
,这有助于这一点。var unsortedArray = [ "H", "ello", "Wo", "rl", "d"] var sortedArray = unsortedArray.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }
注意:这里
sorted
将返回一个sorting的数组。unsortedArray
本身不会被sorting。 -
如果你想sorting
unsortedArray
本身,使用这个unsortedArray.sort { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }
参考:
-
这里是Swiftsorting方法的文档。
-
不同的
String
比较方法的文档在这里 。
可选 :
而不是使用localizedCaseInsensitiveCompare
,也可以这样做:
stringArray.sort{ $0.lowercaseString < $1.lowercaseString }
甚至
stringArray.sort{ $0 < $1 }
如果你想区分大小写比较
很容易得到升序。 按照波纹pipe的步骤,,,
模型1:
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]];
如果你想sorting是不区分大小写的,你需要像这样设置描述符,,
模型2:
NSSortDescriptor * sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)]; sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]];
对我来说这工作….
areas = [areas sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
这里的区域是NSArray
。 我希望它可以帮助别人。