Swiftで配列を並べ替え
以下のSwifty人にとっては、グローバルに上記の目標を達成するための非常にクリーンなテクニックです。Userいくつかの属性を持つカスタムクラスの例を見てみましょう。
class User: NSObject {
    var id: String?
    var name: String?
    var email: String?
    var createdDate: Date?
}
これでcreatedDate、昇順または降順、あるいはその両方に基づいてソートする必要がある配列ができました。それでは、日付を比較する関数を追加しましょう。
class User: NSObject {
    var id: String?
    var name: String?
    var email: String?
    var createdDate: Date?
    func checkForOrder(_ otherUser: User, _ order: ComparisonResult) -> Bool {
        if let myCreatedDate = self.createdDate, let othersCreatedDate = otherUser.createdDate {
            //This line will compare both date with the order that has been passed.
            return myCreatedDate.compare(othersCreatedDate) == order
        }
        return false
    }
}
extensionのArrayforを見てみましょうUser。簡単に言えば、Userオブジェクトしか含まれていない配列に対してのみ、いくつかのメソッドを追加できます。
extension Array where Element: User {
    //This method only takes an order type. i.e ComparisonResult.orderedAscending
    func sortUserByDate(_ order: ComparisonResult) -> [User] {
        let sortedArray = self.sorted { (user1, user2) -> Bool in
            return user1.checkForOrder(user2, order)
        }
        return sortedArray
    }
}
昇順の使用法
let sortedArray = someArray.sortUserByDate(.orderedAscending)
降順の使用法
let sortedArray = someArray.sortUserByDate(.orderedAscending)
同じ注文の使用法
let sortedArray = someArray.sortUserByDate(.orderedSame)
  上記のメソッドは、タイプが
   ||のextension場合にのみアクセスできます。Array[User]Array<User>