Swift 2.0 Tri d'un tableau d'objects par propriété

Dans Swift 2.0, comment allez-vous sortinger un tableau d'objects personnalisés par une propriété? Je sais que dans Swift 1.2, cela a été fait en utilisant sorted () et sort (). Cependant, ces methods ne fonctionnent plus dans Xcode 7 beta 4. Merci!

Par exemple:

class MyObject: NSObject { var myDate : NSDate } ... let myObject1 : MyObject = MyObject() //same thing for myObject2, myObject3 var myArray : [MyObject] = [myObject1, myObject2, myObject3] //now, I want to sort myArray by the myDate property of MyObject. 

Dans Swift 2:

  • Vous pouvez utiliser la méthode de sort , en utilisant compare pour comparer les deux dates:

     let sortedArray = myArray.sort { $0.myDate.compare($1.myDate) == .OrderedAscending } // use `sorted` in Swift 1.2 
  • Ou, si vous voulez sortinger le tableau original, vous pouvez sortInPlace :

     myArray.sortInPlace { $0.myDate.compare($1.myDate) == .OrderedAscending } // use `sort` in Swift 1.2 

Dans Swift 3:

  • returnner un rendu sortingé du tableau, utiliser sorted , pas sort

     let sortedArray = myArray.sorted { $0.myDate < $1.myDate } 
  • pour sortinger en place, c'est maintenant juste un sort :

     myArray.sort { $0.myDate < $1.myDate } 

Et avec le type Date Swift 3, vous pouvez utiliser l'opérateur < .

Si vous voulez sortinger le tableau original des objects personnalisés. Voici une autre façon de le faire dans Swift 2.1

 var myCustomerArray = [Customer]() myCustomerArray.sortInPlace {(customer1:Customer, customer2:Customer) -> Bool in customer1.id < customer2.id } 

id est un entier. Vous pouvez également utiliser le même < operator for Ssortingng .

Vous pouvez en apprendre plus sur son utilisation en regardant un exemple ici: Swift2: Clients à proximité

En swift 3.0

J'ai pris l'hypothèse même que l'exemple demandé dans la question.

ie customObject est MyObject avec la variable myDate. Le tableau de MyObject est myArray. Nous pouvons sortinger comme ça simplement.

 myArray.sort(by: { (one: MyObject, two: MyObject) -> Bool in one. myDate < two. myDate }) 

sort est maintenant sortInPlace (ou quelque chose de similaire) avec les mêmes parameters que sorting.