我有一个 Users 对象数组:
Class Users {
var firstName:String!
var lastName:String!
var status:Int!
override init(fn: String, ln: String, s: Int) {
self.firstName = fn
self.lastName = ln
self.status = s
}
}
var users:[Users] = [Users]()
users.append(Users(fn:"a", ln:"b", s:1))
users.append(Users(fn:"c", ln:"d", s:3))
users.append(Users(fn:"e", ln:"f", s:2))
users.append(Users(fn:"g", ln:"h", s:1))
users.append(Users(fn:"i", ln:"j", s:1))
users.append(Users(fn:"k", ln:"l", s:2))
我知道按状态对数组进行排序的方法,例如
users = users.sorted(by: {$0.status > $1.status})
但是,我如何根据状态对用户数组进行排序,其中 2 在顶部,然后是 3,在最后 1,即 [2,2,3,1,1,1]
最佳答案
考虑重构:
要构造的类:
struct User {
var firstName:String!
var lastName:String!
var status:Status
}
状态枚举:
enum Status: Int {
case online, busy, offline
}
人口:
var users: [User] = [
User(firstName: "a", lastName: "b", status: .online),
User(firstName: "c", lastName: "d", status: .offline),
User(firstName: "e", lastName: "f", status: .busy),
User(firstName: "g", lastName: "h", status: .online),
User(firstName: "i", lastName: "j", status: .online),
User(firstName: "k", lastName: "l", status: .busy)
]
排序:
users = users.sorted(by:{$0.status.rawValue < $1.status.rawValue })
users.forEach { print($0) }
输出:
User(firstName: a, lastName: b, status: .online)
User(firstName: g, lastName: h, status: .online)
User(firstName: i, lastName: j, status: .online)
User(firstName: e, lastName: f, status: .busy)
User(firstName: k, lastName: l, status: .busy)
User(firstName: c, lastName: d, status: .offline)
关于arrays - 根据某些条件对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512540/