我正在使用Core Data来获取诊所列表,诊所的关系名为医生映射到Doctor实体。
我的问题是,每当我拿到NSSSet类型的医生时,记录都是随机提取的,我想用Doctor.name按字母顺序对其进行排序。
我尝试了以下内容
self.doctorList = clinic.doctors?.sortedArray(using: [NSSortDescriptor(key: "name", ascending: true)])
我哪里错了?
谢谢。
(NS)Set
是一种无序的收集类型。
要命令Set
将其转换为具有allObjects
属性的数组并对数组进行排序。
self.doctorList = (clinic.doctors!.allObjects as! [Doctor]).sorted(by: { $0.name < $1.name })
您甚至可以直接对集合进行排序,但结果始终是数组
self.doctorList = (clinic.doctors as! Set<Doctor>).sorted(by: { $0.name < $1.name })
如果该集合被声明为本机Set<Doctor>
,你可以省略类型转换。
我建议将doctors
关系声明为非可选。如果没有相关医生,则该组为空。但是没有任何医生的诊所是不太可能的;-)