如何在swift中对数组中的自定义对象进行排序?

时间:2016-03-07 08:36:18

标签: ios arrays swift

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对象的名称对数组进行排序。

3 个答案:

答案 0 :(得分:4)

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

这应该可以解决问题。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

实现此目的的正确方法是确保您的自定义类符合Comparable协议并提供实现&lt;和==运算符。这将使您能够提供自定义比较并使其可扩展。

想出一个扩展 -

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(<)