Swift 2.0 Sorting Array of Objects by Property

前端 未结 4 1743
隐瞒了意图╮
隐瞒了意图╮ 2020-12-14 14:43

In Swift 2.0, how would you go about sorting an array of custom objects by a property? I know in Swift 1.2, this was done using sorted() and sort(). However, these methods n

相关标签:
4条回答
  • 2020-12-14 15:03

    In Swift 2:

    • You can use sort method, using compare to compare the two dates:

      let sortedArray = myArray.sort { $0.myDate.compare($1.myDate) == .OrderedAscending }  // use `sorted` in Swift 1.2
      
    • Or, if you want to sort the original array, you can sortInPlace:

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

    In Swift 3:

    • to return a sorted rendition of the array, use sorted, not sort

      let sortedArray = myArray.sorted { $0.myDate < $1.myDate }
      
    • to sort in place, it's now just sort:

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

    And with Swift 3's Date type, you can use the < operator.

    0 讨论(0)
  • 2020-12-14 15:15

    If you want to sort original array of custom objects. Here is another way to do so in Swift 2.1

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

    Where id is an Integer. You can use the same < operator for String as well.

    You can learn more about its use by looking at an example here: Swift2: Nearby Customers

    0 讨论(0)
  • 2020-12-14 15:16

    sort is now sortInPlace (or something similar) with the same parameters as sort.

    0 讨论(0)
  • 2020-12-14 15:23

    In swift 3.0

    I have taken the assumption same as the example asked in the question.

    i.e customObject is MyObject with variable myDate. The array of the MyObject is myArray.We can sort like this simply.

    myArray.sort(by: { (one: MyObject, two: MyObject) -> Bool in
        one. myDate < two. myDate
    })
    
    0 讨论(0)
提交回复
热议问题