web-dev-qa-db-ja.com

Swift 2.0プロパティによるオブジェクトの配列のソート

Swift 2.0では、プロパティでカスタムオブジェクトの配列をどのようにソートしますか?Swift 1.2では、sorted()を使用してこれを行いましたおよびsort()。ただし、これらのメソッドはXcode 7ベータ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.
39
felix_xiao

In Swift 2:

  • sortを使用してcompareメソッドを使用して、2つの日付を比較できます。

    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
    

In Swift 3:

  • 配列のソート済みレンディションを返すには、sortedではなくsortを使用します

    let sortedArray = myArray.sorted { $0.myDate < $1.myDate }
    
  • 所定の場所に並べ替えるには、sortになります。

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

また、Swift 3のDateタイプでは、<演算子。

76
Rob

カスタムオブジェクトの元の配列を並べ替える場合。 Swift 2.1でそうする別の方法があります

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

ここで、idは整数です。 Stringにも同じ<演算子を使用できます。

以下の例を見ると、その使用法について詳しく知ることができます。 Swift2:近くの顧客

10
Hanny

In Swift 3.

私は質問で尋ねられた例と同じ仮定をしました。

つまり、customObjectは変数myDateを持つMyObjectです。 MyObjectの配列はmyArrayです。このように簡単にソートできます。

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