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