2016-03-07 66 views
1
class MyClass { 
    var name: String? 
    var address: String? 

    init(name: String, address: String){ 
     self.name = name 
     self.address = address 
    } 
} 

let array = [MyClass(name: "John", address: "USA"), MyClass(name: "Smith", address: "UK"),MyClass(name: "Paul", address: "AUS"), MyClass(name: "Peter", address: "RSA")] 

現在如何通過MyClass對象的名稱對數組進行排序。如何在swift中對數組中的自定義對象進行排序?

回答

3
let sortedArray = array.sort { $0.name < $1.name } 

這應該做的伎倆。

2
array.sortInPlace { $0.name < $1.name } 
0

正確的實現方法是確保您的自定義類符合Comparable協議並提供實現<和==運算符。這將使您能夠提供自定義比較並使其可擴展。

想出了一個擴展 -

extension MyClass:Comparable{}; 


func ==(x: MyClass, y: MyClass) -> Bool { 
    return x.name == y.name //Add any additional conditions if needed 
} 

func <(x: MyClass, y: MyClass) -> Bool { 
    return x.name < y.name //You can add any other conditions as well if applicable. 
} 

現在您可以排序你這個自定義類的對象的數組像

let sorted = array.sort(<) 
相關問題