我怎样才能按照字母顺序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。 有两种方法 – sortsorted ,这有助于这一点。

     var unsortedArray = [ "H", "ello", "Wo", "rl", "d"] var sortedArray = unsortedArray.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending } 

    注意:这里sorted将返回一个sorting的数组。 unsortedArray本身不会被sorting。

  • 如果你想sortingunsortedArray本身,使用这个

     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 。 我希望它可以帮助别人。