我正在使用核心数据来获取诊所列表,这些诊所具有名为Doctors的关系映射到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
关系声明为非可选。如果没有相关的医生,则该集合为空。但是没有任何医生的诊所是极不可能的;-)
关于ios - Swift-对NSSSet的内容进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44989871/