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的Date
types,你可以使用<
运算符。
如果你想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相同的参数。