gpt4 book ai didi

ios - Swift,尝试按对象属性类型字符串对数组进行排序,对象符合可比协议(protocol)

转载 作者:行者123 更新时间:2023-11-28 05:39:09 24 4
gpt4 key购买 nike

我想根据字符串而不是 ID 对新员工数组进行排序,我可以根据 ID 属性对其进行排序,但不能针对 Name 属性进行排序。尝试过

var newEmployeeArray = employeeArray.sorted(by:{$0.Name<$1.Name})

但不工作

class employee:Comparable {
var id = 10
var name = "Deepak"
init(){

}
init(Id:Int , Name:String){
self.id = Id
self.name = Name
}
static func == (lhs:employee, rhs:employee)->Bool{
return lhs.id==rhs.id && lhs.name == rhs.name
}
static func < (lhs:employee, rhs:employee)->Bool{
//Have i written this logic correct?
if(lhs.id != rhs.id){
return lhs.id<rhs.id
}else{
return lhs.name<rhs.name
}
}
}
var a1 = employee(Id:15,Name:"Deepak")
var b1 = employee(Id:10,Name:"Shekhar")
var employeeArray = [a1,b1]

var newEmployeeArray = employeeArray.sorted(by:{$0.Name<$1.Name})//Not working

//var newEmployeeArray = employeeArray.sorted()// Working for ID

print(newEmployeeArray[0].id,newEmployeeArray[1].id,separator:",")

我希望 newEmployeeArray 按名称属性排序。

最佳答案

正如 Paulw11 所述,您应该遵守命名约定。

您可以在这里找到一些信息:

https://swift.org/documentation/api-design-guidelines/

变量以小写字母开头,您的类 employee 中的属性 name(顺便说一下应该称为 Employee)开始用小写字母很好。但是要访问它,您应该用小写字母调用 name

var newEmployeeArray = employeeArray.sorted(by:{ $0.name < $1.name })

祝你有个愉快的一天

Vincent

关于ios - Swift,尝试按对象属性类型字符串对数组进行排序,对象符合可比协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57555789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com