swift2中的排序函数

swift2中的排序函数,swift2,ios9,xcode7,Swift2,Ios9,Xcode7,我对数组进行排序,如下所示: var users = ["John", "Matt", "Mary", "Dani", "Steve"] func back (s1:String, s2:String) -> Bool { return s1 > s2 } sorted(users, back) 但我得到了这个错误 “sorted”不可用:对集合调用“sort()”方法 在这里使用sort()方法的正确方法应该是什么?按照错误消息告诉您的,并调用集合上的sort: us

我对数组进行排序,如下所示:

var users = ["John", "Matt", "Mary", "Dani", "Steve"]

func back (s1:String, s2:String) -> Bool
{
    return s1 > s2
}

sorted(users, back)
但我得到了这个错误

“sorted”不可用:对集合调用“sort()”方法


在这里使用sort()方法的正确方法应该是什么?

按照错误消息告诉您的,并调用集合上的
sort

users.sort(back)
请注意,在Swift 2中,
sorted
现在是
sort
,旧的
sort
现在是
sortInPlace
,这两个函数都将在数组本身上调用(它们以前是全局函数)


小心,这在Swift 3中再次发生了变化,其中
sort
是变异方法,
sorted
是返回新数组的方法。

另一种方法是以简单的方式使用闭包:

users.sort({a, b in a > b})

使用闭包的另一种方法是:

var numbers = [2,4,34,6,33,1,67,20]


var numbersSorted = numbers.sort( { (first, second ) -> Bool in

    return first < second
})
var数=[2,4,34,6,33,1,67,20]
var numbersorted=numbers.sort({(第一,第二)->Bool-in
返回第一个<第二个
})

swift 2.2中,有多种方法可以使用具有排序功能的闭包,如下所示

以数组为例

var names:[String] = ["aaa", "ddd", "rrr", "bbb"];
使用swift闭包对数组进行排序的不同选项如下所示

选项1

// In line with default closure format.
names = names.sort( { (s1: String, s2: String) -> Bool in return s1 < s2 })
print(names)
选项3

// Omitted args types and return keyword as well
names = names.sort( { s1, s2 in s1 < s2 } )
print(names)
Swift 2.3

let sortedArray = array.sort()
let sortedArray = array.sorted()
Swift 3.0

let sortedArray = array.sort()
let sortedArray = array.sorted()

这会产生类似于-[1,10100,2,20200]的值,但我希望得到类似于-[1,2,10,20100]的值
let sortedArray = array.sort()
let sortedArray = array.sorted()