一尘不染

如何在Swift中对数组排序

swift

我想要这段代码的Swift版本:

NSArray *sortedNames = [names sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

阅读 256

收藏
2020-07-07

共1个答案

一尘不染

var names = [ "Alpha", "alpha", "bravo"]
var sortedNames = names.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }

更新:根据其他SO用户的建议提供解释。

与ObjC不同,在Swift中,您有sorted()(和sort())方法,该方法采用您提供的闭包,该闭包返回一个布尔值,以指示一个元素应该在另一个元素之前(true)还是在(false)之后。$
0和$
1是要比较的元素。我使用localizedCaseInsensitiveCompare来获得您想要的结果。现在,localizedCaseInsensitiveCompare返回排序的类型,因此我需要对其进行修改以返回适当的bool值。

更新斯威夫特2: sortedsort由被替换sortsortInPlace

2020-07-07