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.
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
タイプでは、<
演算子。
カスタムオブジェクトの元の配列を並べ替える場合。 Swift 2.1でそうする別の方法があります
var myCustomerArray = [Customer]()
myCustomerArray.sortInPlace {(customer1:Customer, customer2:Customer) -> Bool in
customer1.id < customer2.id
}
ここで、id
は整数です。 String
にも同じ<
演算子を使用できます。
以下の例を見ると、その使用法について詳しく知ることができます。 Swift2:近くの顧客
In Swift 3.
私は質問で尋ねられた例と同じ仮定をしました。
つまり、customObjectは変数myDateを持つMyObjectです。 MyObjectの配列はmyArrayです。このように簡単にソートできます。
myArray.sort(by: { (one: MyObject, two: MyObject) -> Bool in
one. myDate < two. myDate
})