Trier le tableau dans Swift
Pour la Swifty
personne ci-dessous est une technique très propre pour atteindre l'objectif ci-dessus pour le monde entier. Permet d'avoir un exemple de classe personnalisée User
dont certains ont des attributs.
class User: NSObject {
var id: String?
var name: String?
var email: String?
var createdDate: Date?
}
Nous avons maintenant un tableau que nous devons trier sur la base de createdDate
l'ordre croissant et / ou décroissant. Permet donc d'ajouter une fonction pour la comparaison des dates.
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
}
}
Permet maintenant avoir un extension
de Array
pour User
. En termes simples, ajoutons quelques méthodes uniquement aux tableaux qui ne contiennent que des User
objets.
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
}
}
Utilisation pour l'ordre croissant
let sortedArray = someArray.sortUserByDate(.orderedAscending)
Utilisation pour l'ordre décroissant
let sortedArray = someArray.sortUserByDate(.orderedAscending)
Utilisation pour la même commande
let sortedArray = someArray.sortUserByDate(.orderedSame)
La méthode ci-dessus extension
ne sera accessible que si la Array
est de type
[User]
||Array<User>