數組排序
首先拿到一個數組惭蟋,然后這個是按照數字中Item元素的 name 屬性來排序的代碼片段:
searchResults.sortInPlace({ result1, result2 in
return result1.name.localizedStandardCompare(result2.name) == .OrderedAscending
})
這個使用的方法是sortInPlace
贺氓,還有另外一個方法是sort
为居。
如果使用了sort
戚宦,那么原來的數組是不會有任何變化的艺配,使用sortInPlace
,會在原來的數組上做修改伙菜。
還可以簡化為:
searchResults.sortInPlace{
$0.name.localizedStandardCompare($1.name) == .OrderedAscending
}
第二種寫法沒有傳統(tǒng)的括號 ()轩缤,使用 $0 來標記兩個 $1 數組中的對象可讀性很好,這是 Swift 的閉包(Closures)中很好的一個特性贩绕。
運算符重載
另外火的,可以使用運算符重載(operator overloading)
把這個做的更好:
在被排序對象的數組對象之外,記住是在Class之外淑倾,聲明重載算術運算符的方法:
func < (lhs: SearchResult, rhs: SearchResult) -> Bool {
return lhs.name.localizedStandardCompare(rhs.name) == .OrderedAscending
}
有了這個方法馏鹤,剛剛的排序就可以寫的更短:
searchResults.sortInPlace{$0 < $1}
再短:
searchResults.sortInPlace(<)
End.