【发布时间】:2018-03-17 20:48:05
【问题描述】:
我想创建一个通用函数来根据传递的属性对类数组进行排序。
例如,我有这些类
public class Car {
var id: Int
var manufacturer: String
var variant: String
init(id: Int, manufacturer: String, variant: String) {
self.id = id
self.manufacturer = manufacturer
self.variant = variant
}
}
enum Gender {
case male
case female
}
public class Person {
var id: Int
var name: String
var age: Int
var gender: Gender
init(id: Int, name: String, age: Int, gender: Gender) {
self.id = id
self.name = name
self.age = age
self.gender = gender
}
}
还有这些数组,
let cars = [
Car(id: 1, manufacturer: "Ford", variant: "Focus"),
Car(id: 2, manufacturer: "Nissan", variant: "Skyline"),
Car(id: 3, manufacturer: "Dodge", variant: "Charger"),
Car(id: 4, manufacturer: "Chevrolet", variant: "Camaro"),
Car(id: 5, manufacturer: "Ford", variant: "Shelby")
]
let persons = [
Person(id: 1, name: "Ed Sheeran", age: 26, gender: .male),
Person(id: 2, name: "Phil Collins", age: 66, gender: .male),
Person(id: 3, name: "Shakira", age: 40, gender: .female),
Person(id: 4, name: "Rihanna", age: 25, gender: .female),
Person(id: 5, name: "Bono", age: 57, gender: .male)
]
如何为数组编写通用扩展,根据传递的属性对其进行排序? (例如,persons.sort(name) 或 cars.sort(manufacturer))
谢谢!
【问题讨论】:
-
您可以在
sort()方法中将属性名称作为字符串传递。然后将其添加到您的课程中:stackoverflow.com/a/24919834/6638533 -
@samAlvin 他问的是 Swift,而不是 C#。
-
@Alexander 我的错,我以后应该更加小心
-
您是否也对 Swift 4 解决方案感兴趣?
-
确定@MartinR。也可以帮助别人。
标签: arrays swift sorting generics