我正在使用Core Data获取诊所列表,诊所的关系名为医生映射到Doctor实体。
我的问题是,每次我取医生时都是NSSSet类型,记录是随机提取的,我想用Doctor.name按字母顺序对其进行排序
我尝试了以下
self.doctorList = clinic.doctors?.sortedArray(using: [NSSortDescriptor(key: "name", ascending: true)])
我哪里错了?
感谢。
答案 0 :(得分:2)
(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
关系声明为非可选关系。如果没有相关医生,则该组为空。但是没有医生的诊所是不太可能的; - )