Swift 2.0按属性sorting对象数组

在Swift 2.0中,你将如何去sorting一个属性的自定义对象数组? 我知道在Swift 1.2中,这是使用sorted()和sort()完成的。 但是,这些方法在Xcode 7 beta 4中不再有效。谢谢!

例如:

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. 

在Swift 2中:

  • 您可以使用sort方法,使用compare来比较两个date:

     let sortedArray = myArray.sort { $0.myDate.compare($1.myDate) == .OrderedAscending } // use `sorted` in Swift 1.2 
  • 或者,如果你想sorting原始数组,你可以sortInPlace

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

在Swift 3:

  • 返回数组的sorted ,使用sorted ,而不是sort

     let sortedArray = myArray.sorted { $0.myDate < $1.myDate } 
  • sorting到位,现在只是sort

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

而使用Swift 3的Datetypes,你可以使用<运算符。

如果你想sorting自定义对象的原始数组。 这是Swift 2.1中的另一种方法

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

其中id是一个整数。 你也可以使用相同的< operator作为String

您可以通过查看示例来了解更多关于它的用法: Swift2:Near Customers

在迅速3.0

我已经采取了与问题中提出的例子相同的假设。

即customObject是带有variablesmyDate的MyObject。 MyObject的数组是myArray.We可以简单地sorting。

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

sorting现在sortInPlace(或类似的)与sorting相同的参数。