ios - Swift,尝试按对象属性类型字符串对数组进行排序,对象符合可比较的协议
问题描述
我想根据字符串而不是 ID 对新员工数组进行排序,我可以对 ID 属性进行排序,但不能对 Name Property.Tried
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 按 name 属性排序。
解决方案
如前所述Paulw11
,您应该坚持命名约定。
你可以在这里找到一些信息:
https://swift.org/documentation/api-design-guidelines/
变量以小写字母开头,您name
的类中的属性employee
(顺便说一下应该称为Employee
)以小写字母开头,这很好。但是要访问它,您应该name
使用小写字母进行调用。
var newEmployeeArray = employeeArray.sorted(by:{ $0.name < $1.name })
祝你今天过得愉快,
Vincent
推荐阅读
- jquery - jQuery .load() 函数不适用于 DataTables?
- ios - 在 SwiftUI 中使用 UIControl 组件
- android - 在 textView 中设置文本时应用程序崩溃
- elixir - 如何从带有凤凰后端的榆树的静态资产中获取图像?
- c++ - 具有可变数量的参数的函数,这些参数被转换为字符串
- sql - 基于多个表和条件进行过滤的 SQL 命令
- python - 当我从 random.choice 行获得某行代码时,我正试图结束我的游戏
- python - Python记录端口514文件夹/yyyy/mm/dd
- sql - 将一排匹配到两排,无需替换
- python - 给定一个 1D ndarray 和一个整数,生成这个 ndarray 的最有效方法是什么?