繁体   English   中英

Swift 2.0按属性排序对象数组

[英]Swift 2.0 Sorting Array of Objects by Property

在Swift 2.0中,您将如何通过属性对自定义对象数组进行排序? 我知道在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来比较两个日期:

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

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

在Swift 3中:

  • 返回数组的已排序再现,使用sorted ,而不是sort

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

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

使用Swift 3的Date类型,您可以使用<运算符。

如果要对原始自定义对象数组进行排序。 这是Swift 2.1中另一种方法

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

其中id是整数。 您也可以使用相同的< operator for String

您可以通过查看示例来了解有关其使用的更多信息: Swift2:附近的客户

在swift 3.0中

我采取的假设与问题中提到的例子相同。

即customObject是带有变量myDate的MyObject。 MyObject的数组是myArray.We可以简单地排序。

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

sort现在是sortInPlace(或类似的东西),其参数与sort相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM